Я использую Swagger Editor для создания сервера Python колбы, я последовал за Connexion документ, но есть проблема:Python Connexion - Ответ Обрезка
я определил следующий ответ в файле чванство YAML:
responses:
'200':
description: successful operation
schema:
type: object
required:
- firstname
- lastname
properties:
firstname:
type: string
lastname:
type: string
Что я ожидал, чтобы вернуть следующий ответ:
{
"firstname": "Jane",
"lastname" : "Doe"
}
Однако API базы данных возвращает гораздо больший набор данных, например:
user=db.get_user_info()
pprint.pprint(user)
{
"firstname" : "Jane",
"middlename": "foo",
"lastname" : "Doe",
"age" : "25",
"sex" : "male",
...
}
Чтобы вернуть ответ я ожидал, у меня есть 2 решения, но ни один из них совершенны:
Решение 1:
вручную определить меньший набор данных, например:
user_response = {
"firstname" = user["firstname"],
"lastname" = user["lastname"]
}
return user_responose
Но, очевидно, для каждого ответа у меня есть жесткий код переменная _response, что означает, что я должен поддерживать свойства ответа в 2-х местах (как JAML, так и код).
Решение 2:
модель генерируется развязность CodeGen, поэтому у меня есть доступ к модели и попытаться получить свойство ответа, например, модель пользователя, вероятно, определяются следующим образом:
self.swagger_types = {
'firstname': str,
'lastname': str,
}
Это может быть легко, но на самом деле свойства ответа имеют много $ ref и всегда есть $ ref внутри $ ref. Я не могу найти способ легко получить все свойства.
Так что мой вопрос в том, что является лучшим решением?
Большое спасибо!
Когда вы выполняете 'user = db.get_user_info()', существует ли способ указать список полей (например, имя, фамилия), которые вам нужны? (Я не эксперт в Python, но, похоже, у меня хорошая ORM должна иметь такую функцию) –
Возможно, проблема в том, что я не знаю, какие поля нужно возвращать, если я не использую решение 1 (жесткий код поля I необходимость, которая дублируется с содержимым в swagger YAML) или использовать решение 2 (получить поля из сгенерированной модели, которая кажется очень сложной из-за рекурсивной ссылки в полях) –