返回缺少必需参数的错误请求(400)

时间:2017-08-01 23:29:10

标签: c# .net-core asp.net-core-webapi

[HttpPost("test")]
public IActionResult Teste(int? id)
{
    if (!id.HasValue)
        return BadRequest();

    ...
}

如何在不使用'int?'的情况下返回badrequest?如果客户端没有发送id?

在这种情况下,有一些简单的方法可以自动返回badrequest吗?

3 个答案:

答案 0 :(得分:1)

为什么不把id放在这样的路径中:

[HttpPost("test/{id}")]
public IActionResult Teste(int id)
{
    if (id == default(int))
        return BadRequest();

    ...
}

如果需要,您仍然可以确保id不是0(或更复杂的验证)。 这不会产生400 Bad Request响应,但我认为这是最合适的方式。除非您希望让用户传入请求正文中的id,否则您可以执行以下操作:属性验证并检查ModelState以返回错误请求。

答案 1 :(得分:0)

我不知道如果在参数无效的情况下如何自动发送400,但作为快速解决方法,您可以执行以下操作:

value

设置默认值,您可以轻松识别无效参数并返回400或做您喜欢的任何事情。

此外,这消除了您提到的值为0的输入的模糊性。

答案 2 :(得分:-1)

您可以使参数可选具有默认值,如

[HttpPost("test")]
public IActionResult Teste(int id=0)
{
    if (id==0)
        return BadRequest();

    ...
}