Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 在服务器端使用表示业务异常的HTTP响应代码是否合适?_Web Services_Exception_Http Headers_Http Status Codes - Fatal编程技术网

Web services 在服务器端使用表示业务异常的HTTP响应代码是否合适?

Web services 在服务器端使用表示业务异常的HTTP响应代码是否合适?,web-services,exception,http-headers,http-status-codes,Web Services,Exception,Http Headers,Http Status Codes,背景是这样的: 客户端web浏览器向服务器发送请求 服务器程序将在执行实际工作之前启动一些业务检查规则 如果检查失败,应将一些提示反馈到客户端浏览器 所以,问题来了。我应该使用错误响应http代码来表示这一点,还是直接使用200,然后从响应体解析消息 有时候,这不是问题。但是,如果返回错误代码,一些客户端组件会给出一些util方法。所以,这是一个很难做出的决定: 返回200,然后返回错误消息。自己解析并展示它们 返回一些代码,比如500,让客户端组件直接显示它 我建议使用尽可能多的http状态码

背景是这样的:

  • 客户端web浏览器向服务器发送请求
  • 服务器程序将在执行实际工作之前启动一些业务检查规则
  • 如果检查失败,应将一些提示反馈到客户端浏览器

    所以,问题来了。我应该使用错误响应http代码来表示这一点,还是直接使用200,然后从响应体解析消息

    有时候,这不是问题。但是,如果返回错误代码,一些客户端组件会给出一些util方法。所以,这是一个很难做出的决定:

  • 返回200,然后返回错误消息。自己解析并展示它们
  • 返回一些代码,比如500,让客户端组件直接显示它

  • 我建议使用尽可能多的http状态码。这是一个标准,为什么不使用它们

    以下是一些使用http状态代码有意义的示例:

    • 有人想要一个不可用的数据集。找不到404
    • 受保护的ressource需要身份验证
    • 对于当前用户不可用的ressource,应获得403禁止
    • 一个你不能很好处理的错误,写一个500状态
    • 等等

    还可以在那里查找-API的逻辑,您可以看到它的优点。

    通常,您需要指出服务失败的原因。返回自定义错误还可能允许客户端应用程序以适当的方式响应。例如,如果输入验证检查失败,我想用户会希望有机会修复并重新提交请求。HTTP错误不足以表明到底出了什么问题