У меня есть спецификация YAML Swagger/OpenAPI со следующим определением конечной точки:
Код: Выделить всё
'/api/v1/Sensor/now/{instanceUri}':
get:
tags:
- Sensor
parameters:
- name: instanceUri
in: path
required: true
schema:
type: string
- name: x-api-version
in: header
schema:
type: string
responses:
'200':
description: Success
content:
text/plain:
schema:
$ref: '#/components/schemas/Gkkg.Bff.Api.Contracts.TagValueResponses'
application/json:
schema:
$ref: '#/components/schemas/Gkkg.Bff.Api.Contracts.TagValueResponses'
text/json:
schema:
$ref: '#/components/schemas/Gkkg.Bff.Api.Contracts.TagValueResponses'
'204':
description: No Content
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- Bearer:
- sensor_read
Пример сгенерированной функции:
api_v1_sensor_now_instance_uri_get
GkkgBffApiContractsTagValueResponses api_v1_sensor_now_instance_uri_get(instance_uri)
Пример
- Носитель (JWT) Аутентификация (носитель):
Код: Выделить всё
import time
import gkkg_api_python_proxy
from gkkg_api_python_proxy.api import sensor_api
from gkkg_api_python_proxy.model.gkkg_bff_api_contracts_tag_value_responses import GkkgBffApiContractsTagValueResponses
from pprint import pprint
configuration = gkkg_api_python_proxy.Configuration(
host = "http://localhost"
)
# Configure Bearer authorization (JWT): Bearer
configuration = gkkg_api_python_proxy.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
with gkkg_api_python_proxy.ApiClient(configuration) as api_client:
api_instance = sensor_api.SensorApi(api_client)
instance_uri = "instanceUri_example" # str |
x_api_version = "x-api-version_example" # str | (optional)
try:
api_response = api_instance.api_v1_sensor_now_instance_uri_get(instance_uri)
pprint(api_response)
except gkkg_api_python_proxy.ApiException as e:
print("Exception when calling SensorApi->api_v1_sensor_now_instance_uri_get: %s\n" % e)
try:
api_response = api_instance.api_v1_sensor_now_instance_uri_get(instance_uri, x_api_version=x_api_version)
pprint(api_response)
except gkkg_api_python_proxy.ApiException as e:
print("Exception when calling SensorApi->api_v1_sensor_now_instance_uri_get: %s\n" % e)
Имя Тип Описание Примечания
instance_uri str
x_api_version str [необязательно]
Тип возвращаемого значения
GkkgBffApiContractsTagValueResponses
< strong>Авторизация
Носитель
Заголовки HTTP-запросов
Тип контента: не определен
Принимаются: text/plain, application/json, text/json
Подробности ответа HTTP
Код состояния Описание Заголовки ответа
200 Успех —
204 Нет контента —
401 Несанкционировано –
403 Запрещено –
Когда я использую сгенерированный клиент Python для вызова этой конечной точки, я сталкиваюсь ApiTypeError, когда статус ответа равен 204 Нет содержимого:
Код: Выделить всё
ApiTypeError: Invalid type for variable 'received_data'. Required value type is GkkgBffApiContractsTagValueResponses and passed type was str at ['received_data']
< Strong>Вопросы:[/b]
Почему сгенерированный клиент Python завершается с ошибкой ApiTypeError при обработке ответа 204 No Content, но отлично работает в пользовательском интерфейсе Swagger?
Как настроить спецификацию OpenAPI для правильной обработки ответов 204 в клиенте Python?
Я не хочу трогать сгенерированный код.
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/791 ... -responses
Мобильная версия