REST - Web服务响应 - MIME类型?

8

1)为Web服务响应设置正确的MIME类型重要吗?

2)以下是正确的MIME类型:

a)XML响应:application/xml或text/xml。

b)JSON响应:application/json。

application/xml 
text/xml
application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json
5个回答

7
  1. 设置正确的MIME类型对于Web服务响应是否重要?

非常重要。如果您正在进行真正的REST API,则返回不同媒体类型的文档是API规范的重要组成部分。

  1. 什么是a)XML响应的正确MIME类型?b)JSON响应的正确MIME类型?

对于真正的REST服务,它取决于您的API的详细信息以及您定义的内容类型。

例如(摘自这篇值得阅读的优秀文章),银行可能希望为银行账户定义一个Content-Type为application/vnd.bank.org.account+xml。请注意,MIME类型“以+xml结尾,并且根据RFC 3023,XML处理器(包括XMLHttpRequest)可以处理此类表示形式,就好像它是XML一样”。同一家银行也可能使用XML来表示银行转账,这次使用Content-Type为application/vnd.bank.org.transer+xml


4
如果您没有设置MIME类型,那么接收者将无法正确解释资源。分别使用"text/xml"和"application/json"。

7
请注意,text/xmlapplication/xml有略微不同的用途。text/xml表示主要为人类可读/理解的XML格式。无论哪种格式都可以,只需根据XML输出的预期用途来选择即可。 - BoltClock
+1 给 BoltClock。我本来想写同样的评论,但看到他的评论了。请查看 rfc3023(参见 http://www.ietf.org/rfc/rfc3023.txt),并搜索“readable by casual users”。链接 http://xml.silmaril.ie/developers/serversoftware/ 提供了来自 rfc3023 的主要信息的简短形式。 - Oleg
1
使用适当的内容类型是REST的核心原则,因此通用的XML和JSON类型是不合适的。如果OP提到了RPC风格的服务,你的回答就可以了。但我觉得另外两个答案更正确,因此为了让它们处于同等地位,我除了给其他答案点赞外还给了你的回答点了踩。 - quentin-starin

3

1) 设置正确的MIME类型对于Web服务响应是否重要?

是的。然而,这实际上取决于接收方预期或配置如何处理内容。使用关于内容的带外信息构建的客户端可能选择忽略内容类型,或者客户端可以使用内容类型元数据将表示路由到基于内容类型的适当处理模块。Content-Type使客户端能够理解内容,而无需窥视实际内容。此外,由于您将问题标记为与REST相关,请了解REST的自描述约束以及媒体类型在实现此约束方面扮演的角色。如果您想了解更多关于自我描述性的信息,请阅读{{link1:Roy论文的第5.2.1节}}。

2)哪种是 a)XML响应的正确MIME类型? b)JSON响应的正确MIME类型?

application/xml text/xml application/json application/x-javascript text/javascript text/x-javascript text/x-jsontext/x-json

所有上述的内容类型都是通用的,除了告诉客户端内容是JSON还是XML之外,没有提供更多的信息。你需要为你的应用程序指定特定的内容类型,它不仅告诉客户端关于格式的信息,还描述了语义和如何处理内容。至于application/xxx和text/xxx之间的区别,RFC 3023规定如下:
如果一个XML文档即未经处理的源XML文档可以被普通用户阅读,则text/xml优于application/xml。没有明确支持text/xml的MIME用户代理(以及Web用户代理)将把它视为text/plain,例如通过将XML MIME实体显示为纯文本来显示它。当XML MIME实体无法被普通用户阅读时,application/xml更好。我在一些讨论中读到过text/xml可能会在未来被弃用,但我不确定。
对于JSON,正确的MIME类型是application/json。请参见SO question

1

在编程中,MIME类型对于接收方的正确解释非常重要。

a) application/xml或text/xml

b) application/json

MIME媒体类型


我认为最好只使用 text/plain 适用于两者! - 001
如果接收应用程序并未使用响应mime类型,您可以使用任何mime类型。为了符合最佳实践,您必须设置正确的mime类型。 - ReinaldoNS
如果您使用text/plain,例如浏览器将无法正确显示它。 - krico

0

1) 在 Web 服务响应中设置正确的 MIME 类型是否重要?

是的,因为它涉及到统一接口/自描述消息约束。消息必须包含处理它们所需的所有信息。

2) 对于什么是正确的 MIME 类型?

这取决于客户端的请求。您需要检查接受标头。我们通常使用服务的 application/xml 和提供静态文件的 text/xml。但实际上并不重要。

如果您发送超链接,则可以使用供应商特定的 MIME,或者您可以使用一些链接数据解决方案,例如 JSON-LD。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接