gpt4 book ai didi

REST 和多种数据格式

转载 作者:行者123 更新时间:2023-12-04 02:38:28 24 4
gpt4 key购买 nike

好的,这是事实。 StackOverflow 以 REST 风格实现。当您访问特定问题/$id/URL 时,您会看到该问题。内容以 HTML 形式返回,因为它是浏览器可以理解的。

我必须开发自己的 REST 服务。事实是我必须为相同的信息返回多种格式。例如,默认可以是 HTML,但我也可以返回 XML 或 JSON。

问题是:实现这一目标的推荐风格是什么?三个选择(更多来自您的有用建议)

  • URL 中的选项(例如 http://example.com/questions/12345/?format=json )
  • 不同的接口(interface)(例如:对于 json 数据,你有 http://example.com/questions/1234/json/http://example.com/json/questions/12345/,对于 xml 数据,你有 http://example.com/questions/1234/xml/ 等等......你明白了)
  • http头接受:application/json

  • PUT(POST)操作也是如此。如果我想提交不同格式的数据,我需要通知接收方我提供的格式,所以同样的情况(和问题)成立。

    谢谢!

    编辑:附加提案如下

    4) 为每种格式指定正确的 URL,例如 http://example.com/questions/12345.json .这看起来不错,但这是否意味着为了一致性,我们也应该有 http://example.com/questions/12345.html ?听起来如此 1995 年... :)

    PS:我讨厌 Markdown 将任意顺序添加到列表中。如果我想从4开始,我应该可以做到。

    最佳答案

    选项 #3,设置 HTTP“Accept” header ,更符合 HTTP 规范,并且在 REST 纯粹主义者中被认为是最正确的。这也意味着无论表示是什么,您都保持相同的 URL(资源)。

    但是,您可能会遇到无法设置 Accept header 的用户代理,因此建议支持用于指定响应格式的备份机制。在这种情况下,我建议使用 URL 查询字符串参数。使用 URL 查询字符串参数意味着您保持相同的核心 URL,无论返回的内容类型如何。这更清楚地表明客户端应该只向该 URL 发出 PUT,而不是/foo/bar.json 或/foo/bar.xml URL。

    编辑:如果您决定使用 URL 后缀(即 foo.json 与 foo?format=json),要考虑的另一件事是您可能会遇到缓存代理问题。如果有人向/foo.json 发出 PUT,代理不会将其解释为使/foo.xml 无效的请求。但是,如果您使用/foo?format=json,那么它们都存储在代理中的同一资源 (/foo) 下。

    关于REST 和多种数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1250060/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com