我的REST API返回JSON.
我目前正在返回text/plain作为MIME类型,但感觉很有趣.我应该回来application/x-javascript
还是其他类型?
第二个问题是关于错误条件的HTTP状态代码.如果我的REST API返回错误状态,我将返回JSON
{ result: "fail", errorcode: 1024, errormesg: "That sucked. Try again!" }
HTTP状态代码应该保留在200 OK
?
的JSON规范建议application/json
,这似乎是由支持IETF和IANA注册表.
关于第二个问题,我认为如果消息处理以某种方式失败,您应该将结构化和标准错误响应作为JSON消息返回; 只有当您考虑HTTP错误代码时,由于某种原因未能将消息传递给后端处理程序.
更新2014-06-27:客户端(浏览器)仅使用200响应的日子早已过去,RESTful API的主流建议是使用适合响应的HTTP响应代码,2xx用于成功响应(例如201创建的对于所有错误条件,包括来自API本身的错误条件,PUT; 204 No DELETE内容)和4xx和5xx.
JSON的MIME类型是
application/json
http://www.ietf.org/rfc/rfc4627.txt
http://www.iana.org/assignments/media-types/application/
更具体地说:
http://www.ietf.org/rfc/rfc4627.txt
我更喜欢回复HTTP错误状态和特定于应用程序的有效负载.
不,你不应该在错误的情况下返回200.
可以重复状态代码,或在响应有效负载中包含更详细的错误代码.
根据RFC 4627,Content-type
返回的适当方法是注册MIME类型IANA(实际上,它显示在IANA的页面上).当然,如果你要写一个客户,你会希望在你所接受的内容中更加自由,并且也接受其他诸如和.application/json
text/json
text/x-json
现在,如果有错误,你应该不返回HTTP 200,这是从根本上非RESTful.我知道有时候你的错误没有完全匹配,但是在RFC 2616第 10.4-10.5 节中选择最接近的4XX(客户端故障)或5XX(服务器故障)错误,并且在JSON中更精确.