[HttpPost("test")]
public IActionResult Teste(int? id)
{
if (!id.HasValue)
return BadRequest();
...
}
如何在不使用'int?'的情況下返回badrequest?如果客戶端不發送ID?對於缺少所需參數的返回錯誤請求(400)
在這種情況下,有一些簡單的方法可以自動返回badrequest?
[HttpPost("test")]
public IActionResult Teste(int? id)
{
if (!id.HasValue)
return BadRequest();
...
}
如何在不使用'int?'的情況下返回badrequest?如果客戶端不發送ID?對於缺少所需參數的返回錯誤請求(400)
在這種情況下,有一些簡單的方法可以自動返回badrequest?
的默認值你爲什麼不乾脆把ID路徑就像這樣:
[HttpPost("test/{id}")]
public IActionResult Teste(int id)
{
if (id == default(int))
return BadRequest();
...
}
您仍然可以確保如果你願意,這個id不是0(或者更復雜的驗證)。 這不會產生400錯誤的請求響應,但我會說這是最合適的方式來做到這一點。除非你想讓用戶通過請求正文中的id,否則你可以做例如屬性驗證並檢查ModelState以返回錯誤的請求。
我試圖跳過額外的驗證。這個'如果'將不僅需要添加到每個控制器,而且還要添加到該控制器的每個動作。 –
但是,如果你只是忽略if語句,你應該很好去。這將強制客戶端始終傳入一個id(在路徑中)。如果客戶主動選擇傳遞一個無效的ID(例如0),這又是另一種情況,但我看不到如何驗證這一點...... –
可以使參數可選有這樣
[HttpPost("test")]
public IActionResult Teste(int id=0)
{
if (id==0)
return BadRequest();
...
}
我不知道如何自動在參數無效的情況下發送400,但是,作爲一個快速的解決方法,你可以做這樣的事情:
public IActionResult Teste(int id = -1)
設置的默認值,你可以輕鬆識別無效參數並返回400或做任何你喜歡的事情。
此外,這消除了您提到的值爲0的輸入的不明確性。
目前還不清楚你在問什麼。問題是什麼。問題中的代碼應該執行你所問的內容。 – Nkosi
因爲如果我使用'int',如果客戶端不發送id,id將爲0,這對我來說是一個問題。當客戶端不發送某些參數時,有一些簡單的方法可以自動返回badrequest? –
使參數可選'int? id = null' – Nkosi