gpt4 book ai didi

python - 如何向 bravado 创建的 API 客户端添加授权 header

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:16 24 4
gpt4 key购买 nike

我能够使用 requests 模块创建一个简单的 API 接口(interface),该模块可以正确进行身份验证并接收来自 API 的响应。但是,当我尝试使用 bravado 从 swagger 文件创建客户端,并手动将授权 token 添加到头部时,它会失败:

bravado.exception.HTTPUnauthorized: 401 Unauthorized: Error(code=u'invalid_credentials', message=u'Missing authorization header',

我相信我正确添加了授权 header 。

我用来创建客户端的代码如下。如图所示,我尝试通过两种方式添加授权 token :

  • http_client 中通过 set_api_key 设置
  • Swagger.from_url(...) 步骤中添加 request_headers

但是这两个选项都失败了。

from bravado.requests_client import RequestsClient
from bravado.client import SwaggerClient

http_client = RequestsClient()
http_client.set_api_key(
'https://api.optimizely.com/v2', 'Bearer <TOKEN>',
param_name='Authorization', param_in='header'
)


headers = {
'Authorization': 'Bearer <TOKEN>',
}

client = SwaggerClient.from_url(
'https://api.optimizely.com/v2/swagger.json',
http_client=http_client,
request_headers=headers
)

我的问题是,如何正确地将授权 header 添加到 Bravado SwaggerClient?

最佳答案

作为引用,可能的解决方案是在每个请求中添加 _request_options:

from bravado.client import SwaggerClient

headers = {
'Authorization': 'Bearer <YOUR_TOKEN>'
}

requestOptions = {
# === bravado config ===
'headers': headers,
}

client = SwaggerClient.from_url("<SWAGGER_JSON_URL>")

result = client.<ENTITY>.<ACTION>(_request_options=requestOptions).response().result
print(result)

但是,一个更好的解决方案(我仍然无法开始工作)是让它自动对每个请求进行身份验证。

关于python - 如何向 bravado 创建的 API 客户端添加授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56116452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com