【问题标题】:REST - web service response - mime type?REST - Web 服务响应 - mime 类型?
【发布时间】:2011-04-29 18:19:59
【问题描述】:

1) 为 Web 服务响应设置正确的 mime 类型是否重要?

2) a 的正确 mime 类型是什么,
a) XML 响应?

b) JSON 响应?

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

【问题讨论】:

    标签: xml web-services json rest mime-types


    【解决方案1】:
    1. 设置正确是否重要 Web 服务响应的 MIME 类型?

    绝对是的。如果您正在执行真正的 REST API,那么您返回的不同媒体类型的文档是 API 规范的重要组成部分。

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

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

    作为一个例子(取自this excellent article,值得完整阅读),银行可能希望为application/vnd.bank.org.account+xml 的银行账户定义一个Content-Type。请注意 MIME 类型如何“以+xml 结尾,并且根据RFC 3023,XML 处理器(包括 XMLHttpRequest)可以像处理 XML 一样处理此类表示”。同一家银行也可能使用 XML 来表示银行转帐,这次使用的 Content-Type 为 application/vnd.bank.org.transer+xml

    【讨论】:

      【解决方案2】:

      如果您不设置 MIME 类型,则接收方将无法正确解释资源。

      分别使用text/xmlapplication/json

      【讨论】:

      • 请注意text/xmlapplication/xml 的用途略有不同。 text/xml 表示主要是人类可读/可理解的 XML 格式。两者都可以,只是取决于 XML 输出的预期用途。
      • +1 表示 BoltClock。我想写一样的,但我看到了他的评论。查看 rfc3023(参见 ietf.org/rfc/rfc3023.txt)并搜索“普通用户可读”。链接xml.silmaril.ie/developers/serversoftware 包含来自 rfc3023 的简短形式的主要信息。
      • 使用适当的内容类型是 REST 的核心租户,因此通用 xml 和 json 类型是不合适的。如果 OP 询问 RPC 样式服务,您的回答会很好。但我觉得其他两个答案更正确,所以为了让它们处于平等地位,除了对其他答案投赞成票外,我还对你的答案投了反对票。
      【解决方案3】:

      1) 为 Web 服务响应设置正确的 mime 类型是否重要?

      是的。但是,这实际上取决于接收者被期望或配置为如何处理内容。使用有关内容的带外信息构建的客户端可以选择忽略内容类型,或者客户端可以使用内容类型元数据将表示路由到基于内容类型的适当处理模块。 Content-Type 使客户端无需查看实际内容即可理解内容。此外,由于您已将问题标记为与 REST 相关,因此了解 REST 的自我描述约束以及媒体类型在实现此约束方面所起的作用非常重要。如果您有兴趣了解有关自我描述的更多信息,请阅读section 5.2.1 of Roy's dissertation

      2) 什么是正确的 mime 类型 a, a) XML 响应?

      b) JSON 响应?

      应用程序/xml 文本/xml 应用程序/json 应用程序/x-javascript 文本/javascript 文本/x-javascript text/x-jsontext/x-json

      以上所有内容类型都是通用的,除了说明内容是 JSON 还是 XML 之外,没有向客户端提供更多信息。您需要的是应用程序的特定内容类型,它不仅可以告诉您的客户有关格式的信息,还可以描述语义以及如何处理内容。至于 application/xxx 和 text/xxx 的区别,RFC 3023 规定如下:

      如果是 XML 文档,则 未经处理,源 XML 文档是 普通用户可读,text/xml 是 优于应用程序/xml。哑剧 用户代理(和 Web 用户代理) 没有明确的支持 text/xml 会将其视为 text/plain, 例如,通过显示 XML MIME 实体为纯文本。 应用程序/xml 时更可取 XML MIME 实体不可读 普通用户。我读过一些 text/xml 可能的讨论 将来会弃用,但我不确定 那个。那个。

      对于 JSON,正确的 MIME 类型是 application/json。见SO question

      【讨论】:

        【解决方案4】:

        MIME 类型对于接收者正确解释很重要。

        a) 应用程序/xml 或文本/xml

        b) 应用程序/json

        MIME Media Types

        【讨论】:

        • 我认为最好还是坚持使用 text/plain For both!
        • 如果接收者应用程序不使用任何响应 mime 类型,您可以使用任何 mime 类型。要获得最佳实践,您必须设置正确的 mime 类型。
        • 如果你做文本/纯浏览器例如不知道如何正确显示它。
        【解决方案5】:

        1) 为 Web 服务设置正确的 mime 类型是否重要 回应?

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

        2) a 的正确 mime 类型是什么,

        这取决于客户的要求。您必须检查接受标头。我们通常通过服务使用application/xml,通过服务静态文件使用text/xml。但这并不重要。

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

        【讨论】:

          猜你喜欢
          • 2012-03-20
          • 2019-11-08
          • 1970-01-01
          • 2022-11-09
          • 2014-06-11
          • 2010-10-03
          • 2019-11-18
          • 2021-01-26
          • 2020-12-04
          相关资源
          最近更新 更多