0

我们有一个 Web 服务器,它公开了一个 API,客户端可以在其中上传文件。在服务器中读取该文件并进行某些处理并生成带有状态代码 200 的 http 响应。但是,有时服务器会接收到包含错误格式数据的文件。这种情况应该如何处理?通过让异常发生,还是通过返回 400 错误请求?

编辑 -

抛出异常是否等同于返回 500 状态码?在这种情况下应该使用它吗?

4

1 回答 1

1

在我看来,不应使用非 200 代码向客户端报告应用程序级问题,这些代码纯粹为 HTTP 级功能保留。

只返回 200 代码并将应用程序级错误代码/消息/任何内容放在 HTTP 响应正文中是明智的

但是,至少有一种协议使用 500 个代码来传达应用程序级故障:SOAP。例如,这里是包含 SOAP 错误消息的 HTTP 响应的头部:

HTTP/1.1 500 Internal Server Error
Content-Type: application/soap+xml; charset="utf-8"
Content-Length: nnnn

<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
  <env:Body>
    <env:Fault>
     <env:Code>
       <env:Value>env:Sender</env:Value>
       <env:Subcode>
        <env:Value>rpc:BadArguments</env:Value>
       </env:Subcode>
     </env:Code>

但是,无论如何,您会看到不仅返回 500 HTTP 错误代码,而且还包含应用程序级 (SOAP) 数据以及有关所发生情况的详细信息。

最终,由您决定是否将 200 之外的其他内容用于您的协议。您的客户要求将决定单独的 500 错误代码是否足以让他们充分传达错误及其原因。如果它足够了,你就不需要其他任何东西了。如果不是,请发明您的协议,或者更好的是,使用现有的协议,例如 SOAP 或 REST。

于 2011-11-09T16:07:30.747 回答