如果REST API返回JSON,那么MIME类型是什么?
-
03-07-2019 - |
题
我的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的MIME类型是
<代码>应用/ JSON 代码>
http://www.ietf.org/rfc/rfc4627.txt
http://www.iana.org/assignments/media-types/application/
更具体地说:
我更喜欢回复HTTP错误状态和特定于应用程序的有效负载。
不,你不应该在错误的情况下返回200.
可以重复状态代码,或在响应有效负载中包含更详细的错误代码。
根据 Content-type 是 application / json
。 rel =“noreferrer”> RFC 4627 ,它还注册了MIME类型IANA(事实上,它显示在IANA的页面上)。当然,如果你要编写一个客户端,你会希望在接受的内容中更加自由,并且也接受其他如 text / json
和 text / x-json 代码>
现在,如果出现错误,您应该不返回HTTP 200,这基本上是非RESTful的。我知道有时候你的错误没有完全匹配,但是在 RFC 2616第10.4节 ,并且在JSON中更精确。
如果通过“REST API”您的意思是您想要遵循REST架构,那么要使用的媒体类型取决于您希望通过REST API公开的功能。您想要能够创建新对象吗?查询对象列表?编辑一个对象?如果是这样,那么一个好的RESTful媒体类型可能是vnd.collection + json,因为它定义了一个超文本链接接口来操作json对象的集合。
注意:RESTful API可以使用媒体类型application / json,但是这种媒体类型没有超文本链接的RESTful接口,因此它将成为状态更改的终点。
遵循Web API架构也是完全可以接受的,其中HTTP RPC调用返回application / json对象,而其他HTTP RPC调用操纵这些对象,并且没有用于使用和导航状态更改的超文本链接接口。但这不是REST。
我喜欢REST的描述(来自REST的创建者):
换句话说,如果应用程序状态的引擎(以及API) 不是由超文本驱动,那么它不能是RESTful而不是 是一个REST API。周期。
另外,从该帖子的讨论中可以看出这个RESTful应用程序的例子: Lost男孩的Spam-E REST应用程序