我正在使用Bravado 3.0.0。我想发出一个使用我自己的自定义CA Bundle的请求。基础的Requests客户端没有利用REQUESTS_CA_BUNDLE
我设置的env var。
如何传入使用我的CA Bundle的自定义客户端?
(此答案基于Bravado的当前编写本8.1.0版本)
由于在学习Bravado时花了我一段时间才找到答案,并且主要是因为我认为其他人可能会从中受益,因此下面是如何建立连接的最新信息:
为了利用HTTP客户端中的非默认设置(以Requests为例),必须使用自己的设置创建一个新的HTTP客户端实例,然后将其传递给SwaggerClient.from_url()调用:
""" Required to create a new Requests 'http_client' instance: """
from bravado.requests_client import Requestsclient
""" Required to create a Bravado SwaggerClient instance: """
from bravado.client import SwaggerClient
""" Create a new Requests client instance: """
http_client = RequestsClient()
在这里,您可以执行Requests可以做的所有有趣的事情,例如设置基本的HTTP身份验证:
http_client.set_basic_auth(SERVER, USER, PASS)
或禁用SSL证书验证(在测试环境之外不建议使用):
http_client.session.verify = False
或者,如您的问题和答案所指出,请提供本地证书存储以进行验证:
http_client.session.cert = os.environ.get('REQUESTS_CA_BUNDLE')
从那里开始,只需创建一个SwaggerClient实例,将其指向您的swagger.json路径,然后引用Requests'http_client'实例(具有预定义的设置),就像这样:
URL = 'https://myserver/api/path/to/swagger.json'
client = Swaggerclient.from_url(URL, http_client=http_client)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句