我正在构建一个第三方api (电子邮件套件)的包装在一个web应用程序中,内部访问和通过自己的api。例如,这些方法以电子邮件地址和订阅列表作为参数,并返回结果代码。
所以基本上我想:
定义状态代码以显示不同的成功/失败状态。
例如,成功:
所有这些情况基本上都是2xx确定的类别,但必须触发不同的用户反馈消息,这就是为什么我不喜欢使用HTTP状态码。使用纯HTTP状态码没有给出足够详细的反馈信息,并且定义了a)附加状态代码或( b)完全自定义状态代码感觉如此随意。
那么,这里的最佳做法是什么?
这个答案建议我应该始终使用标准的HTTP状态代码,如果它们不适用,我的设计是错误的。在不使用客户端的附加逻辑和api调用的情况下,我如何区分这种差异?
发布于 2014-06-05 13:52:54
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 : "...",
...
}这保持了关注点的更清晰的分离,并提高了可扩展性。
发布于 2014-06-05 13:53:13
在不使用客户端的附加逻辑和api调用的情况下,我如何区分这种差异?
使用有意义的响应体。状态代码就是这样。您不希望为每个新的结果组合创建一个新的HTTP状态代码。
因此,对于前三种情况:
HTTP/1.1 201 Created
...
{
contact_created: "true",
optin_mail_sent: "true",
coupon_sent: "true",
}您需要在客户端以任何方式显示逻辑(例如,从254 ContactYesOptInNoCouponYes到适当的通知),因此响应体似乎是最明智和最可扩展的方式。
https://stackoverflow.com/questions/24061898
复制相似问题