Я использую спецификацию OpenApi 3.0 для документирования своего API. По сути, это REST API, для которого требуется действительный токен Bearer для каждого запроса, кроме запроса входа в систему. Спецификация OpenAPI выглядит следующим образом:
---
openapi: 3.0.0
info:
title: MyTitle
contact:
email: mymail@mail.com
version: 0.0.1
servers:
- url: http://localhost/api/v1
components:
schemas:
...
securitySchemes:
bearerAuth:
type: http
bearerFormat: JWT
scheme: bearer
security:
- bearerAuth: []
В автоматически сгенерированном интерфейсе swagger-ui, который прекрасно работает, то же самое относится и к почтальону, когда я загружаю спецификацию OpenAPI и импортирую ее в Postman.
Однако при использовании генератора openapi используйте следующую команду:
docker run --user `id -u`:`id -g` --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate -i /local/api.json -g python -o /local/api
Однако вместо токена на предъявителя он пытается использовать вместо этого имя пользователя и пароль:
def get_basic_auth_token(self):
"""Gets HTTP basic authentication header (string).
:return: The token for basic HTTP authentication.
"""
return urllib3.util.make_headers(
basic_auth=self.username + ':' + self.password
).get('authorization')
def auth_settings(self):
"""Gets Auth Settings dict for api client.
:return: The Auth Settings information dict.
"""
return {
'bearerAuth':
{
'type': 'basic',
'in': 'header',
'key': 'Authorization',
'value': self.get_basic_auth_token()
},
}
Обратите внимание, что здесь используются имя пользователя и пароль, а функция auth_settings () возвращает базовую аутентификацию. Что мне нужно сделать, чтобы вместо этого использовать схему аутентификации Bearer в сгенерированном коде?