我正在编写一个普通的旧 XML HTTP 请求/响应服务,并且正在寻找有关如何响应调用者的建议。
鉴于响应是 XML,您会建议:
始终返回 HTTP 状态 200,并使用一种“返回代码”方法将响应成功/失败嵌入到 XML 中?例如
<myResponse><returnCode></returnCode><myPayload/></myResponse>
使用 HTTP 状态代码指示成功或失败。
这可能类似于 this question .
最佳答案
Google 和 Amazon 服务仅在您的请求有效并且响应有效时才使用返回 200。
例如使用 Google Contact API
- 如果您请求一个存在的联系人:200 + XML/Json of Contact
- 如果您请求不存在的联系人:404 + Xml/Json 和详细信息
- 如果您的请求格式不正确:400 + Xml/Json with Details
- 如果您还没有发送授权 token :401 + Xml/Json with Details
- 如果您尝试使用 Get 或 Put 插入联系人:405
- 如果您尝试使用 Post 插入联系人:200(假设请求内容有效)
- 如果您尝试使用 Get 或 Post 更新联系人:405
- 如果您尝试使用 Put 更新联系人:200(假设请求内容有效)
- 如果您尝试使用 Get、Put、Post 删除联系人:405
- 如果您尝试使用 Delete 删除联系人:200(假设请求内容有效)
我强烈建议您不要总是返回 200。HTTP 状态代码是围绕代表请求的响应代码结果设计的。如上所示,如果您的请求不正确,那么使用 HTTP 状态代码是一个有效的解决方案。
如果您这边有问题,我建议您使用 5XX。我真的希望谷歌能做到这一点。 (有一次他们的实验性 OAuth 2.0 端点不工作,我没有抛出 503 - 服务不可用,而是收到 400 - 错误请求,这让我觉得我做错了什么......)
有关 HTTP 状态代码的说明,请查看 RFC2616 .
关于.net - HTTP Web 服务和 HTTP 响应代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525858/