web-dev-qa-db-ja.com

Swashbuckle Aspnetcoreを使用して、 `Host`、` basePath`、および `schemes`をswagger.jsonに追加します

公式のドキュメントを段階的に使用してSwaggerUIを構成し、ASP.NETコアAPIアプリケーションでSwaggerJSONファイルを生成しています。

SwashbuckleとASP.NET Coreの使用を開始します

生成されたswagger.jsonファイルを見ると、3つの重要なプロパティHostbasePath、およびschemesが欠落しています。

生成されるswagger.jsonが次のプロパティ/値を持つように、どのコードを追加できるかを理解するのを手伝ってください。

これが理想的なswagger.jsonです-アプリケーションのドキュメントコードに従うと欠落しているHostbasePath、およびschemesの値に注意してください

{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Demo API Title"
  },
  "Host": "some-url-that-is-hosted-on-Azure.azurewebsites.net",
  "basePath": "/api",
  "schemes": ["https"],
  "paths": {
    "/Account/Test": {
      "post": {
        "tags": [
          "Admin"
        ],
        "summary": "Account test method - POST",
        "operationId": "AccountTest",
        "consumes": [],
        "produces": [
          "text/plain",
          "application/json",
          "text/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "boolean"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "NumberSearchResult": {
      "type": "object",
      "properties": {
        "number": {
          "type": "string"
        },
        "location": {
          "type": "string"
        }
      }
    }
  },
  "securityDefinitions": {
    "Bearer": {
      "name": "Authorization",
      "in": "header",
      "type": "apiKey",
      "description": "Authorization. Example: \"Authorization: Bearer {token}\""
    }
  },
  "security": [
    {
      "Bearer": []
    }
  ]
}
5
Jsinh

独自のIDocumentFilterを実装して登録し、そこに必要な値を設定できます。

public class MyDocumentFilter : IDocumentFilter
{
    public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
    {
        swaggerDoc.Host = "some-url-that-is-hosted-on-Azure.azurewebsites.net";
        swaggerDoc.BasePath = "/api";
        swaggerDoc.Schemes = new List<string> { "https" };
    }
}

そして、それを介して登録します

services.AddSwaggerGen(options =>
{
    options.DocumentFilter<MyDocumentFilter>();
});
3
Tseng