首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义状态码

定义状态码
EN

Stack Overflow用户
提问于 2014-06-05 13:43:48
回答 2查看 66关注 0票数 1

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

所以基本上我想:

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

例如,成功:

  • 创建新的联系人
  • 创建新联系人并发送optin邮件
  • 创建新联系人并发送优惠券
  • 现有联系人订阅
  • 已订阅现有联系人并寄出优惠券
  • 以此类推。

所有这些情况基本上都是2xx确定的类别,但必须触发不同的用户反馈消息,这就是为什么我不喜欢使用HTTP状态码。使用纯HTTP状态码没有给出足够详细的反馈信息,并且定义了a)附加状态代码或( b)完全自定义状态代码感觉如此随意。

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

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

EN

回答 2

Stack Overflow用户

发布于 2014-06-05 13:52:54

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

附加的特定于域的状态不应该被强制锤击到HTTP状态中。只需在响应中返回一个附加字段即可。例如:

代码语言:javascript
复制
POST http://www.example.com/users
{
    name : "The User",
    email : "email@theuser.com"
}

答复将包括:

代码语言:javascript
复制
201 CREATED
{
    status : "Optin mail sent",
    timestamp : "...",
    ...
}

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

票数 5
EN

Stack Overflow用户

发布于 2014-06-05 13:53:13

在不使用客户端的附加逻辑和api调用的情况下,我如何区分这种差异?

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

因此,对于前三种情况:

代码语言:javascript
复制
HTTP/1.1 201 Created
...

{
    contact_created: "true",
    optin_mail_sent: "true",
    coupon_sent: "true",
}

您需要在客户端以任何方式显示逻辑(例如,从254 ContactYesOptInNoCouponYes到适当的通知),因此响应体似乎是最明智和最可扩展的方式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24061898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档