-
-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
添加respons_model统一返回 #488
添加respons_model统一返回 #488
Conversation
非常有趣的实现,我会尽快审查和测试 我的一个直接问题是,示例一中只是存在重复性路由装饰器代码吗 |
是哒!!!! |
毛躁的我好像写在第一个示例中多写了一丢段脏代码,我删了@router.get( |
好像删除了 # 定义分页信息模型 class Pagination(BaseModel): total: int = Field(..., description="总条数") page: int = Field(..., description="当前页") size: int = Field(..., description="每页数量") total_pages: int = Field(..., description="总页数") 不影响任何,看来是多余写了这些
我们将遵循 fastapi 设计规范进行 opneapi 优化,请给我一点时间,我将重新研究一下它们内部的集成关系,使这个 pr 看起来更好 |
好滴呢,辛苦大大 |
Hi, @qhp13654398483,非常高兴你提出此宝贵建议,基于当前的已有设计和以下两点,我重新设计了此功能
新实现可查看 #490 ,尽管此 PR 不会被合并,但这仍是一个很好的实例 我们在此邀请您加入团队,如果您可接受,请查看官网:关于 -> 加入团队 了解详情 |
在新的 PR 中实现的效果与此相同,但是返回格式不再是单纯的 ResponseModel,也不是单纯的 Schema,为了统一返回结构,我们并没有采取将所有输出模型集成统一响应结构,而是仅在最终返回时进行处理,这保证了输出模型的灵活性,相关实例可查看 PR 源码或以下实例: @router.get('/{pk}', summary='获取接口详情', dependencies=[DependsJwtAuth])
async def get_api(pk: Annotated[int, Path(...)]) -> ResponseSchemaModel[GetApiListDetails]:
api = await api_service.get(pk=pk)
return response_base.success(data=api)
@router.get(
'',
summary='(模糊条件)分页获取所有接口',
dependencies=[
DependsJwtAuth,
DependsPagination,
],
)
async def get_pagination_apis(
request: Request,
db: CurrentSession,
name: Annotated[str | None, Query()] = None,
method: Annotated[str | None, Query()] = None,
path: Annotated[str | None, Query()] = None,
) -> ResponseSchemaModel[PageData[GetApiListDetails]]:
api_select = await api_service.get_select(request=request, name=name, method=method, path=path)
page_data = await paging_data(db, api_select)
return response_base.success(data=page_data) |
nice 感谢你的回答 |
为
@router.func
的response_model=
字段提供了两个功能create_detail_response_model
:根据 基于SchemaBase
的类提供返回详情的方法create_paged_response_model
: 根据 基于backend/common/pagination._Page
类提供的返回方法主要作用是在OpenAPI文档中能够针对返回字段解释部分的使用
具体使用举例:
和
我是这个项目的粉丝,这个项目的使用真的很舒服,让我少写了很多代码,同时我也是通过这个项目让我见识到了fastapi的强大,我也希望能够提供一些有用的贡献