首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用swagger/openapi在客户机/服务器之间正确共享代码

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

Stack Overflow用户
提问于 2020-05-17 14:04:20
回答 1查看 122关注 0票数 1

我正在尝试弄清楚如何使用openapi生成器来最小化客户端和服务器之间重复的python代码。如果重要的话,我将使用FastAPI作为我的web框架,同时也使用Pydantic。

在服务器端,我有:

代码语言:javascript
复制
class Member(BaseModel):
    name: str
    def greeting(self):
        return "Hello " + name

然后我可以写:

代码语言:javascript
复制
m1 = Member("John Doe")
print(m1.greeting())

到目前为止,从服务器的角度来看还不错。

在FastAPI中,我创建了一个API

代码语言:javascript
复制
@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生成的客户端库中不可用。它不会生成任何帮助器函数,这意味着我必须想出一种更复杂的方式来在客户端和服务器之间共享数据结构和方法。

我这样想代码共享是不是错了?有没有更好的方法?

EN

回答 1

Stack Overflow用户

发布于 2020-05-25 06:22:12

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

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

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

代码语言:javascript
复制
─ myapp
   ├── client
   │   └── __init__.py
   ├── server
   │   └── __init__.py
   └── common
       └── __init__.py
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61847662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档