【问题标题】:REST : different representations of the same dataREST:相同数据的不同表示
【发布时间】:2011-05-21 03:18:28
【问题描述】:

如何构建一个 API,其中相同的数据可能以不同的格式请求,采用 RESTful 格式。例如。

GET /person/<id>  //get the details of resource <id>

现在根据客户端(浏览器)的要求,数据可能以 html(比如正常渲染)或 Json(比如 ajax 调用)的形式发送。所以我的怀疑是

  1. 我可以为这两个请求保留相同的 URL,还是应该将它们分开?
  2. 如何在服务器端检测请求是否为html/Json。请求类型相同(GET)。那么我应该考虑哪个参数。
  3. 如何检测客户端数据类型的差异(html/Json)\

谢谢,

bsr.

【问题讨论】:

    标签: json rest


    【解决方案1】:

    类似问题:REST Content-Type: Should it be based on extension or Accept header?

    接受的答案很重要。

    我可以为两个请求保留相同的 url,还是应该将它们分开?

    是的,保持不变。它是相同的资源,您只是要求它的不同表示。

    如何在服务端检测请求是否为html/Json。请求类型相同(GET)。那么我应该考虑哪个参数。

    您可以使用 Accept 标头指定返回内容类型。

    如何检测客户端数据类型的差异(html/Json)\

    您将查看“Content-Type”标头。

    【讨论】:

    • 为了您自己在开发过程中的理智,添加一个 URL 参数或另一个不同的 URL (/person/.json) 以允许您覆盖 Accept 标头以进行测试可能会很有用.不得不使用 cURL 或其他方式以另一种表示形式检查您的服务结果是一种痛苦。否则我 100% 同意 Mr-sk。
    • 欲了解更多信息,请参阅第 2 节。 12 个 HTTP 规范 (w3.org/Protocols/rfc2616/rfc2616-sec12.html#sec12)
    【解决方案2】:

    为输出类型添加一个变量怎么样?

    【讨论】:

    • 那不是 RESTful。 URL,包括 URL 参数,用于指定资源,而不是它们的表示。指定输出类型的公认方法是 Accept 标头。
    猜你喜欢
    • 2016-07-31
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多