在ASP.NET Core web API使用Swagger/OpenAPI(二)
阿新 • • 發佈:2021-11-26
實戰
首先介紹三個重要元件:
- Swashbuckle.AspNetCore.Swagger:一個把SwaggerDocument物件暴露成JSON端點(openapi.json對應的URI)的Swagger物件模型和中介軟體。
- Swashbuckle.AspNetCore.SwaggerGen:一個根據Routes(路由),Controllers(控制器),Models(模型物件)生成SwaggerDocument的生成器,它通常與Swagger端點中介軟體相結合,自動公開Swagger JSON(openapi.json)。
- Swashbuckle.AspNetCore.SwaggerUI:根據openapi.json生成的對應的UI介面
一、安裝包
方式一:在與專案資料夾相同的目錄下執行如下程式碼:
Install-Package Swashbuckle.AspNetCore -Version 6.2.3
方式二:使用Nuget包管理工具:
新增並配置Swagger中介軟體
在Program.cs檔案中把Swagger生成器新增到服務集合
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); // Register the Swagger services <span style="backgroundColo:yellow">services.AddSwaggerDocument();</span> }
也在Program.cs啟用生成JSON文件和SwaggerUI的中介軟體
if (env.IsDevelopment()) { <div style="backgroundColo:yellow"> // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), // specifying the Swagger JSON endpoint. app.UseSwaggerUI(); </div> }
上面新增的兩行程式碼只有在開發環境時才會生效,如果想在生產環境也使用Swagger,就別放在上面的if判斷內
執行程式並訪問https://localhost:<port>/swagger/v1/swagger.json
就能看到openapi.json文件了。port為自己電腦對應的埠比如(預設5000或5001)
通過https://localhost:<port>/swagger
路徑訪問SwaggerUI
如果想把SwaggerUI的路徑設定成根路徑(https://localhost:
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
<div style="backgroundColo:yellow">
options.RoutePrefix = string.Empty;
</div>
});
}
如果使用了IIS或者反向代理,用過新增./
字首來Swagger端點使用相對地址,例如 ./swagger/v1/swagger.json
,/swagger/v1/swagger.json
表示程式在URL的真實跟目錄下尋找JSON檔案,比如使用https://localhost:<port>/<route_prefix>/swagger/v1/swagger.json
而不是https://localhost:<port>/<virtual_directory>/<route_prefix>/swagger/v1/swagger.json
。
注意: