我有api暴露给多个客户端。他们在请求任何资源时都向我发送了一个“sourceId”,通过它我可以识别请求来自哪个客户端:
我应该在正文或标题中接受“sourceId”吗?它将来会如何影响?
标题更有意义,因为这对某个特定客户来说仍然是静态的,但我想不出一个很好的理由,我如何决定在正文中发送哪个参数以及在标题中哪个参数?
答案 0 :(得分:1)
对于某些HTTP方法,例如HEAD
,GET
和DELETE
,请求有效负载没有定义的语义,并且对此类请求发送有效负载主体可能会导致某些现有实现拒绝请求。有关更多详细信息,请查看RFC 7231,HTTP / 1.1中语义和内容的当前参考。
在HTTP标头中发送参数应该适用于所有HTTP方法。
如果源标识符是API密钥或用于身份验证,则应在Authorization
标头中发送。有许多API定义自定义HTTP标头,如X-API-Key
或X-Source-ID
。我会避免这种情况。
答案 1 :(得分:0)
它在标题中的主要原因是并非所有rest方法都有一个正文,例如GET。在大多数情况下,您的请求感兴趣的数据将在正文中,但有关请求本身的信息将在标题上。 例如,如果你想要有关你的sourceid的信息,那么它将在正文中或作为uri的一部分,但是如果sourceid只是一种在询问有关其他内容的信息时对调用者进行身份验证的方法,那么它将在标题中