使用 .net 核心應用程式并使用 swagger
我最近將 .net core 2.1 升級到 3.1,因此不得不將我的 swagger 包從 4.0.1 升級到 6.3.0
通過上述升級,我看到我們的一個 api 端點有一個非常奇怪的行為。詳情如下:
我們的端點如下:
[HttpGet("GetCount", Name = "GetCount")]
public async Task<IActionResult> GetUsersDataCount(string region, List<string> usersList)
{
//code logic here
}
上面的代碼如何在 swagger 中顯示如下:
.net 核心 2.1
使用上述版本,我可以將區域添加為引數,將 usersList 添加為陣列(帶有添加項),如圖 1 所示
.net 核心 3.1
使用上述版本,我可以將區域添加為引數,但 usersList 我必須將其添加為 RequestBody,如圖 2 所示
通過上述更改,這對使用此 API 的團隊造成了破壞。
關于它為何以這種方式表現的任何輸入或我需要進行哪些更改才能使其正常作業

uj5u.com熱心網友回復:
我不知道它會從 .NET Core 2.1 更改為 .NET Core 3.1,但我的印象List<T>是 Web API 將其視為復雜型別,因此預計來自正文。
您可以嘗試在引數串列中添加FromUri屬性以將其顯式標記為查詢引數的一部分:
[HttpGet("GetCount", Name = "GetCount")]
public async Task<IActionResult> GetUsersDataCount(
string region,
[FromUri] List<string> usersList)
{
}
更多資訊在這里:為什么我們必須指定 FromBody 和 FromUri?
我從來沒有遇到過[FromUri]用于獲取查詢引數的問題,但 OP 說[FromQuery]有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446540.html
