我一直在围绕 REST 进行一些研究。我注意到 Amazon S3 API 主要为其 REST 接口(interface)使用 http header 。这让我感到惊讶,因为我认为该接口(interface)将主要根据请求参数工作。
我的问题是:我应该主要使用 http header 开发我的 REST 接口(interface),还是应该使用请求参数?
最佳答案
问题主要是定义的参数是否是资源标识符 (URI) 的一部分。如果是,那么您将使用请求参数,否则使用 HTTP 自定义 header 。例如,传递音乐库中的 album
的 id 必须是 URI 的一部分。
请记住,例如 /employee/id/45
(或 /employee?id=45
,REST 不会反对查询字符串参数或 for 干净斜杠分隔的 URI)标识一个资源。现在,您可以通过发送请求 header content-type: text/plain
或 content-type: image/jpg
来使用内容协商来获取信息或图像。在这方面,资源被认为是相同的,头部仅用于定义资源的格式。
一般来说,我不太喜欢 HTTP 自定义 header 。 这通常假设客户端事先了解服务器实现(无法通过自然 HTTP 方式发现,即超媒体),这始终被认为是 REST 反模式
HTTP header 通常定义 HTTP 的方面正交 以在请求/响应过程中实现什么。 Authorization
header (真的用词不当,应该是身份验证)是一个典型的例子。
关于http - REST:HTTP header 或请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944834/