API密钥-输入内容或标题


14

目前正在研究API,只是想就应该在哪里传输API密钥的最佳位置收集意见。我知道这不应该放在URL中,这样就留下了请求标头或消息正文。

如果将其放在标头中,则可以提出一种可以在所有服务中使用的通用方法,但是我得到的规范希望它在正文中(例如,包含在JSON字符串中) POST正文中的序列化对象)。


还要注意,并非所有请求类型都应具有主体,并且如果您要在没有主体的情况下验证请求,则密钥将需要位于标头中。
Whymarrh

Answers:


11

在HTTP中,有一个Authorization标头。

尽管通常用于提供用户凭据,但对于API,它可以包含客户端的ID和相应的API密钥。

有几个好处:

  • 来自不同框架的支持。许多框架会期望Authorization标头进行身份验证。不使用它会强制编写其他代码,以使用自定义值为那些框架提供数据。

  • 来自不同工具的支持。例如CURL。

  • 更少“ WTF在哪里找到/放置此API密钥?!” 来自加入团队的新开发人员(或为您的API设计新客户端的开发人员)。

  • 然后,您可以使用HTTP状态代码定义,例如401 Unauthorized为此

    响应必须包含一个WWW-Authenticate标头字段。客户端可以使用合适的Authorization标头字段重复该请求。

将其移至请求的主体可能会很快变得痛苦。大多数框架和工具都无法使向请求中添加主体变得非常简单,这可能会使您的API变得比原本更加困难。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.