REST API:自定义HTTP标头与URL参数

Vas*_*anu 91 rest http

您何时在REST API的请求部分中使用自定义HTTP标头?

例:

你会用吗?

GET /orders/view 
(custom HTTP header) CLIENT_ID: 23
Run Code Online (Sandbox Code Playgroud)

代替

GET /orders/view/client_id/23 or 
GET /orders/view/?client_id=23
Run Code Online (Sandbox Code Playgroud)

Nia*_*rva 108

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),资源状态(主体)或参数的事物.影响资源(参数).这留下了关于自定义标头请求的真实元数据.

HTTP具有非常广泛的标题选择,涵盖了您需要的大部分内容.我看到自定义标题出现在系统到系统请求代表用户操作.代理系统将验证用户并向X-User: userid标头添加" "并使用系统凭据来命中端点.接收系统验证系统凭证被授权代表用户行动,然后验证用户是否有权执行该操作.

  • 第三段是我读过的最具信息性的答案之一;-) (6认同)
  • 不,我提到的 X-User 的用法是在系统到系统的连接中,系统代表第三方进行操作。例如,用户 U 与服务器 A 对话。服务器 A 向服务器 B 提供带有 X-User 标头的凭据,表示“使用我的凭据检查我是否有权代表用户 U 执行此操作”。这出现在面向服务的架构中,通常您使用 HTTPS。移动平台几乎应该始终由用户本人进行操作,并使用适当的第一人称凭证进行交易。 (3认同)

KJ *_*han 24

使用HTTP 标头进行发送,

  • 指令(读取 JSON 格式的输入)

  • 元数据(谁发出请求)

  • 每个请求发送的通用数据(如身份验证、会话)

使用路径参数来制作,

  • 对资源的具体请求 ( /country/state/city )

    他们必须形成一个逻辑层次结构

使用查询参数进行发送,

  • 对资源的操作请求(如分页、过滤器)


sui*_*ing 5

当没有其他方法按标准或惯例传递信息时,我只会使用自定义标头.Darren102解释了传递该值的典型方法.通过使用自定义标题的典型模式,你的Api会更友好.这并不是说你不会有使用它们的情况,只是它们应该是最后的手段,而且还没有HTTP规范处理过的东西.


小智 5

何时在REST API的请求部分中使用... HTTP标头?

身份验证:GUID,基本身份验证,自定义令牌等,例如, 带有REST api的Guid令牌(而不是用户名/密码)的基本身份验证

如果您参与在PCI-DSS或其他安全规则所覆盖的域之间传递令牌或其他类似身份验证的信息,则您可能还必须埋入参数,因为某些法规明确要求身份验证元素不包含可能被重播的URL(来自浏览器历史记录,代理日志等)。


Chr*_*ssy 5

自定义标题具有以下优点:

  • 可以通过网络工具/脚本(身份验证,元信息等)轻松读取
  • 使网址不受安全性的影响(更安全,不在浏览器/代理缓存中)
  • 保持网址整洁:更好地缓存资源

  • 它们也可以被代理悄悄地剥离/过滤 (2认同)