FastAPI(五)接口文档

这一部分讲解如何配置 FastAPI 的 API 文档,包括全局信息、请求和响应参数说明及接口描述。启动 uvicorn 服务之后,可以:

  1. 通过 http://127.0.0.1:8000/docs 访问交互式文档
  2. 通过 http://127.0.0.1:8000/redoc 访问另外一种形式的文档

from fastapi import FastAPI
from fastapi import Query
from fastapi import Path
from pydantic import BaseModel
from pydantic import Field
import uvicorn


# 1. 定义全局文档信息
license_info={'name': 'Apache 2.0', 'url': 'https://www.apache.org/licenses/LICENSE-2.0.html'}
contact = {'name': 'Edward Meng', 'url': '', 'email': 'chinapp@foxmail.com'}
terms_of_service = 'http://example.com/terms/'
app = FastAPI(title='接口文档',
              description='该接口提供了丰富的 LLM 访问接口.',
              version='1.0.0',
              redoc_url='/docs1',
              docs_url='/docs2',
              terms_of_service=terms_of_service,
              license_info=license_info,
              contact=contact)


# 2. 定义请求和响应参数文档信息
class MyRequest(BaseModel):
    name : str = Field(title='姓名', description='输入者的姓名')
    age : int = Field(title='年龄', description='输入者的年龄')

class MyResponse(BaseModel):
    grade: int = Field(title='等级', description='返回等级')
    score: int = Field(title='分数', description='返回分数')


# 3. 定义具体 api 文档信息
@app.post('/demo',
          summary='示例接口',
          description='我是对示例接口的描述',
          response_description='我是对接口返回值的描述',
          response_model=MyResponse)
async def demo(request : MyRequest):
    return {'grade': 1001, 'score': 85}


if __name__ == '__main__':
    uvicorn.run(app, host='127.0.0.1', port=8000)