什么时候在REST API的请求部分使用定制的HTTP头?
示例:
你是否曾经使用过
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
而不是
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
发布于 2012-02-07 08:12:56
URL指示资源本身。“客户端”是可以操作的资源,因此应该是基本url:/orders/view/client/23
的一部分。
参数只是用来参数化对资源的访问。这一点在帖子和搜索中尤其有用:/orders/find?q=blahblah&sort=foo
。参数和子资源之间只有一条线:/orders/view/client/23/active versus /orders/view/client/23?show=active
。我建议使用子资源样式并保留搜索参数。
由于每个端点都有一个状态转移(用来修改助记符),所以自定义标头应该只用于不涉及资源名称( url)、资源状态(正文)或直接影响资源的参数( REpresents )的内容。这就留下了关于自定义标头请求的真实元数据。
HTTP有非常广泛的标头可供选择,几乎涵盖了您需要的所有内容。我所见过的自定义标头出现在代表用户操作的系统到系统请求中。代理系统将验证用户并将"X-User: userid
“添加到标头,并使用系统凭据命中端点。接收系统验证系统凭证是否被授权代表用户执行操作,然后验证用户是否被授权执行该操作。
发布于 2012-02-07 07:56:17
只有在没有其他方式通过标准或约定传递信息时,我才会使用自定义标头。Darren102解释了传递该值的典型方法。你的Api会更友好,使用典型的模式和自定义的头,这并不是说你没有理由使用它们,只是说它们应该是最后的手段,HTTP规范还没有处理的东西。
发布于 2012-02-07 07:52:54
REST没有标准,但是可以接受的方式是
GET /orders/view/23
不使用定制的头,因此23之后的视图假定是id,因此您将有一个接受id的函数,从而只产生该信息。
https://stackoverflow.com/questions/9169081
复制相似问题