【问题标题】:OpenAPI & Python: How to use apiKey security scheme?OpenAPI & Python:如何使用 apiKey 安全方案?
【发布时间】:2021-04-03 08:35:14
【问题描述】:

我正在尝试通过 Python 使用具有 OpenAPI 规范的 API。我生成了 openapi_client 并使用生成的示例之一开始。首次调用 API 成功,但后续调用因会话 ID 无效而失败。

  securitySchemes:
    user_session_authentication:
      description: [...]
      type: apiKey
      in: header
      name: SOME_PREFIX_user_session_id
security:
  - user_session_authentication: [] # default for all actions is user_session_id!
import openapi_client
from openapi_client.api import some_api
from openapi_client.model.inline_response200 import InlineResponse200
from openapi_client.model.inline_response2002 import InlineResponse2002
from pprint import pprint

with openapi_client.ApiClient() as api_client:
    username = "john"
    password = "45d75ii47"
    
    api_instance = some_api.SomeApi(api_client)
    username = username
    password = password
    body = function_a("foo")

    api_response = api_instance.foo(username=username, password=password, body=body)
    pprint(api_response)
    
    api_response = api_instance.bar()
    pprint(api_response)

对 foo() 的 http 响应包含键值对 'user_session_id': '1bf92fc3-7f2a-450f-a472-03a07a70bd8d'。如何将此键值对添加到第二个请求的标头中?目前,第二个请求的标头仅包含以下内容:{'Accept': 'application/json', 'User-Agent': 'OpenAPI-Generator/1.0.0/python'}

【问题讨论】:

    标签: python openapi openapi-generator


    【解决方案1】:

    我找到了this 的问题并针对我的用例修改了代码:

    import openapi_client
    from openapi_client.api import some_api
    from openapi_client import Configuration
    from openapi_client.model.inline_response200 import InlineResponse200
    from openapi_client.model.inline_response2002 import InlineResponse2002
    from pprint import pprint
    
    with openapi_client.ApiClient() as api_client:
        username = "john"
        password = "45d75ii47"
        
        api_instance = some_api.SomeApi(api_client)
        username = username
        password = password
        body = function_a("foo")
    
        api_response = api_instance.foo(username=username, password=password, body=body)
        pprint(api_response)
        
        conf = Configuration()
        conf.api_key = {"SOME_PREFIX_user_session_id": api_response.user_session_id}
        api_client = openapi_client.ApiClient(None, "SOME_PREFIX_user_session_id", conf.get_api_key_with_prefix("user_session_id"))
        api_instance = some_api.SomeApi(api_client)
    
        api_response = api_instance.bar()
        pprint(api_response)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-06
      • 2021-01-06
      • 2022-12-06
      • 2022-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多