Asp.NetコアSwaggerUIアクセス

Asp.NetコアSwaggerUIアクセス

理解するのは簡単

swagger目的は単純で、それが自動的に文書はまた、手動更新トラブルや見落としを減らすこと、同時に更新されたインターフェイス、インターフェイスの変更に基づいて生成されるように、手動で各インターフェイスのインターフェイスのドキュメントを書いてはいけません。また、インターフェイスのデバッグおよび他の機能を提供していますが開いていないpostmanインタフェースをテストするためのインタフェース・テスト・ソフトウェアを、書かれたノートがある場合は、詳細な解説があり、その後、上院および出力へのインタフェースは、コール・インタフェースの人々は、より直感的な読書することができインターフェイスを理解しています。コミュニケーションの効率性と生産性が大幅に強化されます。

のアクセス闊歩する手順:

  1. サインSwaggerBuilderを:services.AddSwaggerGen()
  2. インサートミドルウェアは、生成されたSwaggerとして開示されたJSONノード。app.UseSwagger()
  3. 挿入Swagger-UIミドルウェアを、指定されたswagger jsonエンドポイントは、それをサポートします:app.UseSwaggerUI()

まず、Nugetパッケージを追加

Package Manager : Install-Package Swashbuckle.AspNetCore
或
CLI : dotnet add package Swashbuckle.AspNetCore

第二に、登録闊歩ドキュメントサービス

  • 注意を払います

  1. MVCを使用する場合はservices.AddMvcCore()、必要が手動で追加するにはApiExplorer、理由SwashBuckleに強く依存ApiExplorerApiExplorerコントローラを見つけるために使用されるインターフェイスメソッド。手動で追加する必要があります。以下のような:
    services.AddMvcCore().AddApiExplorer();

  2. あなたが使用している場合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);
        }
  3. 使用する場合はAddMvc()、ときに使用するにはAddMvcCore()、それを?
    することによりAddMvc()、我々は見つけることができるはずな方法、そこに追加されViewRazorおよび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);
        }
    }

おすすめ

転載: www.cnblogs.com/imlxp/p/11223952.html