【问题标题】:.NET core web api send bad request to client.NET 核心 Web api 向客户端发送错误请求
【发布时间】:2018-08-25 11:24:41
【问题描述】:

我正在一个 .net core web 项目中编写一个 web api。

// POST: api/Companies
[HttpPost]
public void Post([FromBody]string value)
{
    if (string.IsNullOrEmpty(value))
    {
        // inform the client that request is incorrect.
    }
}

我希望能够通知客户这是一个糟糕的请求,我发现了很多文章,但都是 1-2 年前的,我相信从那时起发生了很多变化。所以想知道这个问题的最佳解决方案。

【问题讨论】:

  • 您当然可以找到有关 ASP.NET Core 的最新文档。很多内容展示了如何将操作结果返回给客户端。在搜索“asp.net core return bad request”后,我用了不到 30 秒的时间找到了我遇到的 this。这确实向我表明,您在提出问题之前没有进行基础研究。
  • return BadRequest(YourObject);
  • 不,没有改变,API函数在HTTP协议上,错误请求和状态码没有改变。

标签: asp.net-core


【解决方案1】:

在 ControllerBase 类中声明的 BadRequest 方法将创建一个 400 响应消息。它已经存在多年(新版本,几乎相同的实现)并且它很可靠,所以使用它

[HttpPost]
public IActionResult Post([FromBody]string value)
{
    if (string.IsNullOrEmpty(value))
    {
        return BadRequest("request is incorrect");
    }
}

【讨论】:

  • 实际返回该响应不是很好吗?也改变函数的返回类型。 :-)
  • @AfzaalAhmadZeeshan 感谢您指出这一点,更新了答案:)
  • 我也可以在 HttpGet 中使用它吗?
  • @Enrico 是的,你可以 :)
【解决方案2】:

推荐的方法是将您的方法签名更改为:

[HttpPost]
public IHttpActionResult Post([FromBody]string value)
{
    if (string.IsNullOrEmpty(value))
    {
        return BadRequest("Value must be passed in the request body.");
    }
    else
    {
        return Ok("Request was correct");
    }
}

通过返回 IHttpActionResult,您可以调用 Ok(...) methodBadRequest("reason") 以及您可以在 the HttpActionResult documentation page 上找到的其他内置类型

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多