0

假设您在 Python/Flask 中有一个 REST 服务,它采用以下请求正文:

{'date': '2015-01-01'}

您的消费者发送了以下错误请求:

{'date': '01/01/2015'}.

您的 API 无法解析它,并且您已经捕获了错误并且知道用户以错误的格式发送了日期。您响应哪个 HTTP 错误代码?

我一直在使用HTTP Code 400

由于语法错误,服务器无法理解该请求。客户端不应该在没有修改的情况下重复请求。

我告诉我的消费者,如果他看到 400,他不应该尝试重新发送请求,因为它需要先更改。

但是,我的消费者一直报告说,我的网络服务器有时会返回一个带有以下 HTML 的 400 错误:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>

有时我的用户会收到此错误消息,即使是有效请求,我仍然无法弄清楚。现在我想知道我对 400 的使用是否不正确。值得注意的是,他不能单独使用 HTTP 代码来告诉他是否应该重新发送。

4

1 回答 1

1

您可以使用状态代码400422也可以在响应负载中提供一些额外的提示。例如:

{
  "errors": [
    {
      "field": "date",
      "message": "The format of the date must 'MM/dd/yyyy'"
    }
  ]
}

这样,最终用户将知道其请求中有什么问题并进行更新。

希望它可以帮助你,蒂埃里

于 2015-09-21T17:23:51.597 回答