我有一個ASP.NET Core Web API專案,有這個post端點:
我有一個ASP.NET Core Web API專案,有這個post端點。
[HttpPost("post")]
public async Task<ActionResult<Player>> PostPlayer(Player player)
{
_context.Players.Add(player)。
await _context.SaveChangesAsync()。
return CreatedAtAction("GetPlayer", new { id = player.Id }, player)。)
}
我可以在Swagger中用這個JSON有效載荷向該端點發出一個帖子請求:
{
"handle": "Cole",
"角色": "修復者",
"avatar": "null"
}
在這個地址。https://localhost:44326/api/Players/post。
并且它成功地創建了一個新的播放器。
然而,在Postman中,使用相同的地址和相同的JSON有效載荷作為主體,我得到了這樣的結果:
在Postman中,使用相同的地址和相同的JSON有效載荷作為主體。
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.13"。
"標題": "不支持的媒體型別"。
"狀態": 415。
"traceId": "00-36aa0c0b65a981479a1bb99d32400eff-77eb26e1d840de4d-00"
}
這到底是什么意思?為什么這個post方法在Postman中不起作用?我所有的Get端點在Postman中都能正常作業,只是沒有這個端點。
uj5u.com熱心網友回復:
如果你的請求體是JSON,你需要確保你在Postman的body標簽中選擇了正確的頭和正確的請求型別。
- 設定
將Content-Type頭設定為application/json(如果沒有就添加)。 - 進入Postman的Body標簽,選擇raw單選按鈕,然后從單選按鈕旁邊的下拉選單選擇JSON。
如果上述步驟不起作用,那么最好的方法是將作業請求(來自Swagger)與Postman請求進行比較。以下是你如何做到這一點:
- 在Google Chrome瀏覽器中打開swagger頁面,然后打開開發者工具(在Chrome中右鍵點擊swagger頁面,然后點擊Inspect)。它將打開開發工具。
- 進入開發者工具的網路標簽,選擇獲取/XHR過濾器。
- 然后點擊Swagger的Try now按鈕,向你的API發出請求。
- 你將在Network標簽的詳細資訊中看到API呼叫;然后你可以檢查你的Web應用向你的API發送了哪些頭檔案。檢查它為
Content-Type頭傳遞了什么值。
一旦你在Network標簽中追蹤到一個有效的請求,你就可以很容易地找出你的Postman請求與Swagger請求的不同之處。
uj5u.com熱心網友回復:
嘗試添加FromBody
[HttpPost("post")]
public async Task<ActionResult<Player>> PostPlayer([FromBody] Player player)
或者另一種方法是在Postman Headers => Content選單中取消選中 "application/json; charset=utf-8 "選項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/322129.html
標籤:
下一篇:相同的"num"但不同的值
