我用 C# 编写了许多 API,并使用 Swashbuckle 创建了一个“Swagger”文档网站。
对于验证 REST 调用,我在标头中使用 API 密钥。
我创建了一个页面,允许下载任何编程语言的特定客户端,如下所述:https ://generator.swagger.io
我想让用户能够使用他自己的 API 密钥生成客户端,这样他就不需要再在代码中手动设置 API 密钥了。
在我的 Swagger JSON 中,我有这个安全定义:
"securityDefinitions": {
"apiKey": {
"type": "apiKey",
"description": "API Key Authentication",
"name": "X-ApiKey",
"in": "header"
}
}
在 Swagger Client Generator 的页面中,我找到了允许设置客户端选项的模型,但我找不到 API 密钥如何(以及是否)可以在客户端代码中硬编码(或任何其他类型的授权)。
GeneratorInput {
spec (object, optional),
options (object, optional),
swaggerUrl (string, optional),
authorizationValue (AuthorizationValue, optional),
securityDefinition (SecuritySchemeDefinition, optional)
}
AuthorizationValue {
value (string, optional),
type (string, optional),
keyName (string, optional)
}
SecuritySchemeDefinition {
description (string, optional),
type (string, optional)
}
我想我必须设置 AuthorizationValue 对象,但没有关于它的文档(或者我找不到它)。
能够让生成的客户端库向所有请求添加任意 HTTP 标头就足够了。
在这种情况下,我们可以让它添加:
X-ApiKey:{whatever the key is}
有人有想法吗?
非常感谢!