在 ASP.NET Core 使用 Swagger
Swagger 是一個方便後端工程師提供 API 測試的 UI 工具,在早期其實就有寫過相關文章,但在 .NET 6 後寫法有些改變,故重寫一篇來當作筆記。
首先在 NuGet 上搜尋”Swashbuckle.AspNetCore”並安裝,之後在 Program 上加入下列程式碼
...
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
...
app.UseAuthorization();
app.UseSwagger();
app.UseSwaggerUI();
...
這樣在 View 上可簡化成:<email mail-to="aaa3">aaa3</email>
而以下範例則是單純生出一個連到 Google 的 html a tag:
[HtmlTargetElement("test")]
public class TestTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a";
output.Attributes.SetAttribute("href", "https://www.google.com.tw");
output.Content.SetContent("Test Content");
}
}
之後加入 Model:
public class DataResult
{
public string status { get; set; }
public object data { get; set; }
}
之後加入 APIController:
[Route("API")]
public class APIController : Controller
{
/// <summary>
/// Get datas
/// </summary>
/// <returns>return json object</returns>
[HttpGet("GetDatas")]
public IActionResult GetDatas()
{
var data = new
{
aaa3 = "aaa3",
aaa4 = 9
};
DataResult dataResult = new DataResult
{
status = "0",
data = data
};
return new JsonResult(dataResult);
}
/// <summary>
/// Get datas by date
/// </summary>
/// <param name="date"></param>
/// <returns>return json object</returns>
[HttpGet]
[Route("GetDatasByDate/{date}")]
public IActionResult GetDatasByDate(string date)
{
var data = new
{
aaa3 = "aaa3",
aaa4 = 9
};
DataResult dataResult = new DataResult
{
status = "0",
data = data
};
return new JsonResult(dataResult);
}
}
要注意的是,在每個 action 上都要明確加上 route 路徑,另外如果在 url 上要加上變數,如上面程式碼所示,可這樣寫:[Route("GetDatasByDate/{date}")]
最後測試網址如下:
https://[FQDN]/swagger/
就可以看到測試網頁了
參考資料