api - 定义状态码

标签 api http rest response

我正在为 Web 应用程序内部的第 3 方 api(电子邮件套件)构建一个包装器,可以在内部访问并通过自己的 api 访问。例如,这些方法将电子邮件地址和订阅列表作为参数并返回结果代码。

所以基本上我想:

定义状态代码以显示不同的成功/失败状态。

例如成功:

  • 已创建新联系人
  • 已创建新联系人并选择发送邮件
  • 创建新联系人并发送优惠券
  • 现有联系人已订阅
  • 已订阅现有联系人并已发送优惠券
  • 等等..

所有这些情况基本上都属于 2xx 类 OK,但必须触发不同的用户反馈消息,这就是为什么我不满意使用 HTTP status codes .使用纯 HTTP 状态代码不会提供足够详细的反馈并且定义 a) 额外的状态代码或 b) 完全自定义的状态代码感觉很随机。

那么,去这里的最佳做法是什么?

This answer建议我应该始终使用标准的 HTTP 状态代码,如果它们不适用,则我的设计是错误的。如果不在客户端使用额外的逻辑和 API 调用,我将如何区分差异?

最佳答案

HTTP 状态代码的目的是传达 HTTP 操作的状态 - 是否成功、未经授权、待定、配置错误等等。在您描述的所有情况下,请求的操作都是成功的——一切都按计划进行。因此,对于所有这些情况,最可能的状态代码是 200 OK 或 201 CREATED。

不应将其他特定于域的状态强行写入 HTTP 状态。只需在您的回复中返回一个额外的字段。例如:

POST http://www.example.com/users
{
    name : "The User",
    email : "email@theuser.com"
}

响应将包含:

201 CREATED
{
    status : "Optin mail sent",
    timestamp : "...",
    ...
}

这可以更清晰地分离关注点并提高可扩展性。

关于api - 定义状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24061898/

相关文章:

c - 如何在 C API 中生成 ipairs(而不是 pairs)行为

.net - .NET 的 SWIFT 消息解析

javascript - Angular 2 : Dynamic synchronous http requests

android - 将 base64 图像从 Android 发布到 Azure 移动后端

java - 如何使用 restful webservices 从文件中读取所有值并生成相关响应

java - 如何以所需的方式对 REST API 响应进行排序?

python - 如何使用参数化过滤创建类似 Twitter 的流 API?

javascript - 用于构建 AngularJS 应用程序的正确 API 架构

javascript - AngularJS 使用 $http.put() 将表单数据发送到服务器时出错

java - 在 Java 中获取 URL 响应抛出异常