如何使用swagger / openapi在客户端/服务器之间正确共享代码

问题描述 投票:1回答:1

我试图弄清楚如何使用openapi-generator来最大程度地减少客户端和服务器之间的重复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生成的客户端库中不可用。它不会生成任何辅助函数,这意味着我必须想出一种更复杂的方式来在客户端和服务器之间共享数据结构和方法。

我是否认为这种方式的代码共享错误?有没有更好的方法?

python swagger openapi openapi-generator fastapi
1个回答
0
投票

OpenApi仅允许您指定对象的数据,而不是函数。

要在客户端和服务器之间共享通用代码,您可以使用通用代码创建第三个项目/模块。

然后将其用作客户端/服务器项目中的依赖项。

─ myapp
   ├── client
   │   └── __init__.py
   ├── server
   │   └── __init__.py
   └── common
       └── __init__.py
热门问题
推荐问题
最新问题