[英]REST: HTTP headers or request parameters
我一直在围绕REST进行一些研究。 我注意到Amazon S3 API主要使用http标头作为其REST接口。 这对我来说是一个惊喜,因为我认为接口主要用于请求参数。
我的问题是:我应该主要使用http标头开发我的REST接口,还是应该使用请求参数?
问题主要在于定义的参数是否是资源标识符(URI)的一部分。 如果是这样,那么你将使用请求参数,否则使用HTTP自定义标头。 例如,在音乐库中传递album
的ID必须是URI的一部分。
请记住,例如/employee/id/45
(或者/employee?id=45
,REST 对查询字符串参数没有偏见或者对于清晰的斜杠分隔的URI)标识一个资源。 现在,您可以通过发送请求标头content-type: text/plain
来使用内容协商content-type: text/plain
或content-type: image/jpg
来获取信息或图像。 在这方面,资源被认为是相同的,并且标头仅用于定义资源的格式。
一般来说,我不是HTTP自定义标头的忠实粉丝。 这通常假设客户端具有服务器实现的先验知识(不能通过自然HTTP方式发现,即超媒体),这通常被认为是REST反模式
HTTP标头通常定义与请求/响应过程中要实现的HTTP 正交的HTTP方面。 Authorization
标题(真的是用词不当,应该是身份验证)是一个典型的例子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.