Api 定义状态代码

Api 定义状态代码,api,http,rest,response,Api,Http,Rest,Response,我正在为web应用程序内部的第三方api(电子邮件套件)构建一个包装器,可以在内部通过自己的api进行访问。例如,这些方法将电子邮件地址和订阅列表作为参数并返回结果代码 所以基本上我想: 定义状态代码以显示不同的成功/失败状态。 例如,成功: 已创建新联系人 创建新联系人并选择发送邮件 创建新联系人并发送优惠券 现有联系人已订阅 已订阅现有联系人并已发送优惠券 等等 所有这些案例基本上都是2xx OK类别,但必须触发不同的用户反馈消息,这就是为什么我不喜欢使用。使用纯粹的HTTP状态代码并不

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

所以基本上我想:

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

  • 已创建新联系人
  • 创建新联系人并选择发送邮件
  • 创建新联系人并发送优惠券
  • 现有联系人已订阅
  • 已订阅现有联系人并已发送优惠券
  • 等等
所有这些案例基本上都是2xx OK类别,但必须触发不同的用户反馈消息,这就是为什么我不喜欢使用。使用纯粹的HTTP状态代码并不能提供足够详细的反馈,定义a)附加状态代码或b)完全自定义的状态代码感觉非常随机

那么,这里的最佳实践是什么


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

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

不应将其他特定于域的状态强加于HTTP状态。只需在响应中返回一个附加字段。例如:

POST http://www.example.com/users
{
    name : "The User",
    email : "email@theuser.com"
}
答复将包括:

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

这保持了关注点的清晰分离并提高了可扩展性。

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

不应将其他特定于域的状态强加于HTTP状态。只需在响应中返回一个附加字段。例如:

POST http://www.example.com/users
{
    name : "The User",
    email : "email@theuser.com"
}
答复将包括:

201 CREATED
{
    status : "Optin mail sent",
    timestamp : "...",
    ...
}
这保持了更清晰的关注点分离,并提高了可扩展性

在客户端不使用额外的逻辑和api调用的情况下,如何区分差异

使用有意义的回应机构。状态代码就是这样。您不希望为每个新的结果组合创建新的HTTP状态代码

因此,对于前三个场景:

HTTP/1.1 201 Created
...

{
    contact_created: "true",
    optin_mail_sent: "true",
    coupon_sent: "true",
}
您需要在客户端以任何方式(例如从
254 contactyesoptinocouponies
到适当的通知)显示一些逻辑,因此响应主体似乎是最合理和可扩展的方式

在客户端不使用额外的逻辑和api调用的情况下,如何区分差异

使用有意义的回应机构。状态代码就是这样。您不希望为每个新的结果组合创建新的HTTP状态代码

因此,对于前三个场景:

HTTP/1.1 201 Created
...

{
    contact_created: "true",
    optin_mail_sent: "true",
    coupon_sent: "true",
}
您需要在客户端以任何方式(例如从
254 contactyesoptinocouponies
到适当的通知)显示一些逻辑,因此响应主体似乎是最合理和可扩展的方式