我正在尝试弄清楚如何使用openapi生成器来最小化客户端和服务器之间重复的python代码。如果重要的话,我将使用FastAPI作为我的web框架,同时也使用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生成的客户端库中不可用。它不会生成任何帮助器函数,这意味着我必须想出一种更复杂的方式来在客户端和服务器之间共享数据结构和方法。
我这样想代码共享是不是错了?有没有更好的方法?
发布于 2020-05-25 06:22:12
OpenApi只允许您指定对象的数据,而不允许指定函数。
要在客户端和服务器之间共享公共代码,您可以使用公共代码创建第三个项目/模块。
然后将其用作客户端/服务器项目中的依赖项。
─ myapp
├── client
│ └── __init__.py
├── server
│ └── __init__.py
└── common
└── __init__.pyhttps://stackoverflow.com/questions/61847662
复制相似问题