公式のドキュメントを段階的に使用してSwaggerUIを構成し、ASP.NETコアAPIアプリケーションでSwaggerJSONファイルを生成しています。
SwashbuckleとASP.NET Coreの使用を開始します
生成されたswagger.jsonファイルを見ると、3つの重要なプロパティHost
、basePath
、およびschemes
が欠落しています。
生成されるswagger.jsonが次のプロパティ/値を持つように、どのコードを追加できるかを理解するのを手伝ってください。
これが理想的なswagger.jsonです-アプリケーションのドキュメントコードに従うと欠落しているHost
、basePath
、および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": []
}
]
}
独自の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>();
});