WebAPI - HowardWhile/2022_note GitHub Wiki
ref https://www.youtube.com/watch?v=llUKIGbF43Q



修改APIValues的文件ValueController.cs

[HttpGet("GetInt")]
public int GetInt()
{
return 123;
}
[HttpGet("GetDouble")]
public double GetDouble()
{
return 123.321;
}Swagger(OpenAPI)的執行頁面就可以看到該API出現

ref:
https://github.com/domaindrivendev/Swashbuckle.AspNetCore
Swashbuckle.AspNetCore
主要修改AddSwaggerGen的訊息就可以達成

//builder.Services.AddSwaggerGen();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Version = "v1",
Title = "API測試",
Description = "An ASP.NET Core Web API for API測試",
TermsOfService = new Uri("https://example.com/terms"),
Contact = new OpenApiContact
{
Name = "Example Contact",
Url = new Uri("https://example.com/contact")
},
License = new OpenApiLicense
{
Name = "Example License",
Url = new Uri("https://example.com/license")
}
});
});

這要修改UseSwaggerUI不然預設的路徑會是v1/swagger.json

//app.UseSwaggerUI();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v2/swagger.json", "API v2");
});使用summary與remarks標籤


/// <summary>
/// 取得整數
/// </summary>
/// <remarks>
/// 這是一個測試用的API
/// </remarks>- 啟用 XML 註解

<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>- AddSwaggerGen做一下修改讀取產生的XML註解

var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var filePath = Path.Combine(System.AppContext.BaseDirectory, xmlFilename);
c.IncludeXmlComments(filePath);原因在於用執行檔運行起來環境會從開發模式變成產品模式

因API的樣板長得像這樣,使得下面這段程式不運行了,可以暫時透過註解if (api.Environment.IsDevelopment()),讓畫面跑出來。

你被終端機的訊息陰了
把網址 https://localhost:5001 改成 https://localhost:5001/swagger/就可以了
別點exe,改成開終端機敲指令
dotnet .\<WebAPI>.dll --environment Development...
https://stackoverflow.com/questions/70332897/how-to-change-default-port-no-of-my-net-core-6-api

https://dotblogs.com.tw/wellwind/2016/11/24/jwt-auth-web-api
https://ithelp.ithome.com.tw/articles/10199102
https://ithelp.ithome.com.tw/articles/10198150
https://blog.miniasp.com/post/2022/02/13/How-to-use-JWT-token-based-auth-in-aspnet-core-60
https://ithelp.ithome.com.tw/articles/10242295
https://www.youtube.com/watch?v=v7q3pEK1EA0
https://github.com/patrickgod/JwtWebApiTutorial
https://stackoverflow.com/questions/45727856/how-to-download-a-file-in-asp-net-core
/// <summary>
/// 下載指定的檔案
/// </summary>
/// <remarks>
/// 下載指定的檔案
/// </remarks>
[HttpGet("MyDownload")]
public ActionResult MyDownload(string FilePath = "")
{
byte[] fileBytes = System.IO.File.ReadAllBytes(FilePath);
return File(fileBytes, "application/force-download", fileName);
}