Asp.NetコアSwaggerUIアクセス
理解するのは簡単
swagger
目的は単純で、それが自動的に文書はまた、手動更新トラブルや見落としを減らすこと、同時に更新されたインターフェイス、インターフェイスの変更に基づいて生成されるように、手動で各インターフェイスのインターフェイスのドキュメントを書いてはいけません。また、インターフェイスのデバッグおよび他の機能を提供していますが開いていないpostman
インタフェースをテストするためのインタフェース・テスト・ソフトウェアを、書かれたノートがある場合は、詳細な解説があり、その後、上院および出力へのインタフェースは、コール・インタフェースの人々は、より直感的な読書することができインターフェイスを理解しています。コミュニケーションの効率性と生産性が大幅に強化されます。
のアクセス闊歩する手順:
- サイン
Swagger
Builderを:services.AddSwaggerGen()
。 - インサートミドルウェアは、生成された
Swagger
として開示されたJSON
ノード。app.UseSwagger()
- 挿入
Swagger-UI
ミドルウェアを、指定されたswagger json
エンドポイントは、それをサポートします:app.UseSwaggerUI()
まず、Nugetパッケージを追加
Package Manager : Install-Package Swashbuckle.AspNetCore
或
CLI : dotnet add package Swashbuckle.AspNetCore
第二に、登録闊歩ドキュメントサービス
注意を払います
MVCを使用する場合は
services.AddMvcCore()
、必要が手動で追加するにはApiExplorer
、理由SwashBuckle
に強く依存ApiExplorer
、ApiExplorer
コントローラを見つけるために使用されるインターフェイスメソッド。手動で追加する必要があります。以下のような:
services.AddMvcCore().AddApiExplorer();
あなたが使用している場合
services.AddMvc()
、あなたは登録する必要はありません。のでがAddMvc()
追加されましたApiExplorer
。以下のような:public static IMvcBuilder AddMvc(this IServiceCollection services) { if (services == null) throw new ArgumentNullException(nameof (services)); IMvcCoreBuilder builder = services.AddMvcCore(); builder.AddApiExplorer();//在这里 builder.AddAuthorization(); MvcServiceCollectionExtensions.AddDefaultFrameworkParts(builder.PartManager); builder.AddFormatterMappings(); builder.AddViews(); builder.AddRazorViewEngine(); builder.AddRazorPages(); builder.AddCacheTagHelper(); builder.AddDataAnnotations(); builder.AddJsonFormatters(); builder.AddCors(); return (IMvcBuilder) new MvcBuilder(builder.Services, builder.PartManager); }
使用する場合は
AddMvc()
、ときに使用するにはAddMvcCore()
、それを?
することによりAddMvc()
、我々は見つけることができるはずな方法、そこに追加されView
、Razor
およびTagHelper
サービスは、これらのWEBAPIはプロジェクト未満です。だから、:
1)あなたのプロジェクトは、MVCのWebプログラムが使用されている場合AddMvc()
。
。プロジェクトはWEBAPIがある場合は2)が、使用されているAddMvcCore()
必要に応じて、した後、必要に応じて他のサービスを追加します。もちろん、使用しないでAddMvc()
何の問題。
闊歩サービスを追加します。
services.AddSwaggerGen(options =>
{
options.SwaggerDoc(AppDefaults.ApiDocumentName, new Info
{
Title = AppDefaults.ApiDocumentTitle,
Description = AppDefaults.ApiDocumentDescription,
Version = typeof(Startup).Assembly.GetName().Version.ToString()
});
//加载注释文件
Directory.GetFiles(Environment.ContentRootPath, "*.xml", SearchOption.AllDirectories)
.ToList()
.ForEach(f => options.IncludeXmlComments(f));
});
第三に、パイプラインを追加
//生成swagger-json文件,并重定义swagger-json文件路由模板
app.UseSwagger(options => options.RouteTemplate = "{documentName}/swagger.json");
app.UseSwaggerUI(options =>
{
//指定生成swagger-json文件路径,为SwaggerUI提供数据
options.SwaggerEndpoint($"/{AppDefaults.ApiDocumentName}/swagger.json", AppDefaults.ApiDocumentName);
//自定义SwaggerUI页面路由前缀
//地址栏输入 http://loacalhost:5000/lxp 就可以打开SwaggerUI页面
options.RoutePrefix = "lxp";
});
第四に、インターフェイスを定義
- あなたがコントロールしたい場合は
Swagger
、ディスプレイを、すべてのコントローラには、属性のルートを使用する必要があります。 - ラベルの性質及び特性からインタフェースHTTPを使用するには
例えば:
[Route("[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet("name")]
public async Task<ActionResult<string>> GetNameAsync([FromQuery] string name)
{
if (!string.IsNullOrEmpty(name))
{
ModelState.TryAddModelError(nameof(name), $"{nameof(name)} can not be empty");
}
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return await Task.FromResult(name);
}
}