REST API返回JSON的MIMEtypes是什么?

我的REST API返回JSON。

我目前正在返回text / plain作为MIMEtypes,但它感觉很有趣。 我应该返回application/x-javascript或其他types?

第二个问题是关于错误条件的HTTP状态码。 如果我的REST API正在返回一个错误状态,我将以JSON的forms返回

 { result: "fail", errorcode: 1024, errormesg: "That sucked. Try again!" } 

HTTP状态代码应该保持在200 OK吗?

JSON规范提出了application/json ,这似乎得到了IETF和IANA注册pipe理机构的支持。

关于第二个问题,我认为如果消息处理以某种方式失败,您应该返回一个结构化的标准错误响应作为JSON消息; 只有当由于某种原因将消息传递给后端处理程序失败时,才会考虑HTTP错误代码。

更新2014-06-27 :客户端(浏览器)仅处理200响应的日子早已过去,而RESTful API的主streambuild议是使用适合响应的HTTP响应代码,2xx响应成功(例如,201创buildPUT; 204没有内容的DELETE)和4xx和5xx的所有错误条件,包括来自API本身。

我更喜欢回复HTTP错误状态和应用程序特定的有效负载。

不,你不应该在错误情况下返回200。

可以重复状态码,或者在响应有效载荷中包含更详细的错误代码。

根据RFC 4627 ,返回的正确Content-typeapplication/json ,它也注册了IANA的MIMEtypes(事实上,它显示在IANA的页面上)。 当然,如果你要写一个客户端,你会希望在接受的时候更加自由,同时接受其他的东西,如text/jsontext/x-json

现在,如果出现错误,您不应该返回HTTP 200,这基本上不是RESTful。 我知道有些时候你的错误并不完全匹配,但是在RFC 2616第 10.4-10.5 节中select最接近的4XX(客户端错误)或5XX(服务器错误)错误,并且在JSON中更精确。