[英]ASP.NET Core 5 Web API, POST return CreatedAtAction error
[英]Why return object in WebAPI POST method with CreatedAtAction?
在 Asp.NET 內核中為 API 編寫 POST 方法時,可以使用CreatedAtAction
以下示例來自文檔
[HttpPost]
[Consumes(MediaTypeNames.Application.Json)]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> CreateAsync(Product product)
{
if (product.Description.Contains("XYZ Widget"))
{
return BadRequest();
}
await _repository.AddProductAsync(product);
return CreatedAtAction(nameof(GetById), new { id = product.Id }, product);
}
CreatedAtAction 動作結果有以下效果:
前兩個在我看來是合理的。 但是我想知道為什么需要第三種效果? 起初,這似乎是響應大小的不必要增加,但我很好奇為什么該模式會按原樣出現在文檔中,包括創建的 object。 返回作為請求發送的已創建資源有什么好處? 或者可能是在響應中包含 object 的(唯一)原因是包含服務器端生成的值,例如創建日期或主鍵?
服務器可以生成客戶端不知道的新數據,例如用於創建或修改的 ID 或時間戳。 如果客戶端在初始請求后需要此數據,您可以通過在響應正文中包含創建的資源來節省不必要的往返行程。
它並不總是最好的選擇。 您已經權衡了立即訪問與增加帶寬使用的好處。 在以這種方式返回大量資源之前,需要進行一些考慮。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.