http - REST:HTTP header 或请求参数

标签 http rest http-headers httprequest

我一直在围绕 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/plaincontent-type: image/jpg 来使用内容协商来获取信息或图像。在这方面,资源被认为是相同的,头部仅用于定义资源的格式。

一般来说,我不太喜欢 HTTP 自定义 header 。 这通常假设客户端事先了解服务器实现(无法通过自然 HTTP 方式发现,即超媒体),这始终被认为是 REST 反模式

HTTP header 通常定义 HTTP 的方面正交 以在请求/响应过程中实现什么。 Authorization header (真的用词不当,应该是身份验证)是一个典型的例子。

关于http - REST:HTTP header 或请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944834/

相关文章:

http - Google Cloud Storage 文件缓存和过期问题

node.js - 使用 ng 服务器 Angular 6 运行脚本

ruby-on-rails - 如何创建到 Rails 资源的 DELETE 链接?

php - 文本/纯文本与文本/javascript

ajax - 如何检测 XHR 何时返回缓存资源?

javascript - 将每个页面的 javascript 合并到一个文件中,还是提供页面特定的文件?

java - HTTP Post 不工作?

c# - 某些方法的 WCF REST 基本身份验证

wcf - 通过 WCF REST 传递验证异常

javascript - 折叠 JSON 字符串以在 header 变量中发送 - Mailgun