对于缺少所需参数的返回错误请求(400)
[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