Я пытаюсь понять, как использовать openapi-generator, чтобы минимизировать дублирование кода Python между клиентом и сервером. Если это важно, я использую FastAPI в качестве веб-фреймворка вместе с Pydantic.
На стороне сервера у меня есть:
class Member(BaseModel):
name: str
def greeting(self):
return "Hello " + name
Затем я могу написать:
m1 = Member("John Doe")
print(m1.greeting())
Пока все хорошо с точки зрения сервера.
Затем в FastAPI я создаю API
@app.get("/members/", response_model=List[Member])
def get_members():
m1 = Member("Jane Doe")
m2 = Member("John Smith")
return [m1, m2]
После того, как я сгенерирую клиентский код с помощью openapi-generator
, я могу написать: my_members = my_api.get_members()
на стороне клиента. До этого момента все работает отлично.
Однако теперь именно здесь возникает проблема. Я хочу вызвать my_members[0].greeting()
на клиенте, но это недоступно в клиентской библиотеке, созданной openapi-generator
. Он не генерирует никаких вспомогательных функций, что означает, что мне нужно придумать более сложный способ совместного использования структур данных и методов между клиентом и сервером.
Я ошибаюсь, думая о совместном использовании кода таким образом? Есть ли лучший подход?
openapi-generator
. Что бы вы хотели сделать, если у вас есть зависимый от платформы код или языковая библиотека (например, numpy в Python). Я не думаю, что это возможно. - person Guillaume Jacquenot   schedule 17.05.2020