【web】Fastapi主动天生接口文档(Swagger、ReDoc )

打印 上一主题 下一主题

主题 503|帖子 503|积分 1509

简介

FastAPI是盛行的Python web框架,适用于开发高吞吐量API和微服务(直接支持异步编程)
FastAPI的上风之一:通过提供高级抽象和主动数据模型转换,简化哀求数据的处置处罚(用户不需要手动处置处罚原始哀求数据),并能根据路由和 Pydantic 模型主动天生 OpenAPI 接口文档。


  • Swagger UI
  • ReDoc
demo

  1. import uuid
  2. import uvicorn
  3. from typing import Any, Union, Optional
  4. from typing_extensions import Literal
  5. from fastapi import Body, FastAPI
  6. from pydantic import (
  7.     BaseModel,
  8.     Field,
  9.     UUID4
  10. )
  11. app = FastAPI()
  12. class UserIn(BaseModel):
  13.     channel: Literal[0, 1] = Field(0, title="渠道")
  14.     username: str = Field(..., title="用户名")
  15.     password: str = Field(..., title="用户密码", description="长度6-8位")
  16.     email: str = Field(..., title="用户邮箱地址")
  17.     full_name: str = Field(None, title="用户全名")
  18.     request_id: Optional[UUID4]
  19. class UserOut(BaseModel):
  20.     username: str = Field(..., title="用户名")
  21.     email: str = Field(..., title="用户邮箱地址")
  22.     full_name: str = Field(None, title="用户全名")
  23.     request_id: Optional[UUID4]
  24. # FastAPI will take care of filtering out all the data that is not declared in the output model (using Pydantic).
  25. # 因此,FastAPI将负责过滤掉输出模型中未声明的所有数据(使用Pydantic)。
  26. @app.post("/user/", response_model=UserOut)
  27. async def create_user(
  28.         user: UserIn = Body(
  29.             examples={
  30.                 "example1": {
  31.                     "summary": "A short summary or description of the example",
  32.                     "value": {
  33.                         # example data here
  34.                         "channel": 0,
  35.                         "username": "Foo",
  36.                         "password": "33759",
  37.                         "email": "chencare@163.com",
  38.                         "full_name": "xiaotao"
  39.                     }
  40.                 }
  41.             })
  42. ) -> UserOut:
  43.     user.request_id = uuid.uuid4()
  44.     print(user.request_id)
  45.     return user
  46. if __name__ == '__main__':
  47.     uvicorn.run(app=app, access_log=True, port=9988)
复制代码
运行后,会提示Uvicorn running on http://127.0.0.1:9988 (Press CTRL+C to quit)

在欣赏器输入http://127.0.0.1:9988/redoc( ReDoc),http://127.0.0.1:9988/docs(Swagger UI )即可查察
ReDoc 页面如下:

ReDoc vs. Swagger UI
ReDoc更美观,Swagger UI更注意交互(用户直接从界面中发送哀求,查察响应,这对于测试和调试 API 非常有用。)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表