基础
文档
http://127.0.0.1:8001/docs
http://127.0.0.1:8001/redoc
http://127.0.0.1:8001/openapi.json
导包
from fastapi import FastAPI, Header, Body, Form
from fastapi.responses import JSONResponse, HTMLResponse, FileResponse
import uvicorn
from fastapi import HTTPException, status
框架
备注
static
templates
crud 数据库操作
database 数据库配置
create_db 数据库创建
main 业务逻辑
models 模型
schemas 类似 序列化
入口
if __name__ == '__main__':
uvicorn.run(app='main:app', host="127.0.0.1", port=8001, reload=True, debug=True, workers=10)
参数
reload 自动重启
debug 调试模式
workers 并发
配置
app = FastAPI(
title='标题',
description='描述',
version='1.0.0', # 版本
docs_url='/ss', # 文档地址
redoc_url='/xx', # 文档地址
)
函数
@app.get('/{参数}')
async def index(参数, 参数=Header(默认值)):
"""
接口描述
可以多行
"""
return 'index'
装饰器
@app.get()
@app.post()
@app.delete()
@app.put() #更新
@app.patch() # 部分更新
@app.api_route('/login', methods=['GET', 'POST'])
访问路径
'/user/me'
'/user/{id}'
'/user/{file:path}' # 作为路径处理
参数
响应 特别是确保私有数据被过滤掉
response_model=BaseModel类
response_model=Union[BaseModel类, BaseModel类] 符合任意一个输出都可以
response_model=List[Item] 输出可以是一个列表
状态码
status_code=200
status_code=status.HTTP_201_CREATED
参数
在函数内接收的参数
名称=Header(默认值) 接收Headers参数 一个参数一个字段
备注
名称: Optional[List[str]] = Header(None)
名称=Body(默认值)
备注
接收Body里raw参数 参数会接收全部数据 可以是Text Json HTML XML javaScript
名称=Form(默认值)
备注
接收Body里form-data参数 一个参数一个字段
可在一个路径操作中声明多个 Form 参数,但不能同时声明要接收 JSON 的 Body 字段
名称=Cookie(默认值) 接收Cookie参数
备注
接收Cookie参数
名称: bytes = File(...) 接收文件
备注
会被读取到内存中
len(名称) 大小
files: List[bytes] = File(...) 多个文件
名称: UploadFile = File(...)
备注
适合大文件
名称.filename 文件名
名称.content_type 获取类型 例如,image/jpeg
files: List[UploadFile] = File(...) 多个文件
数据类型
名称: Optional[List[str]] = Query(None) 接收多个参数
名称: List[str] = Query(["foo", "bar"]) 接收多个参数 有默认值
名称: BaseModel类 接收BaseModel类内定义的字段
名称: Optional[BaseModel类] = None
名称: Optional[List[BaseModel类]] = None
参数验证
参数名: int = Path(..., title='我的数字', description='我的描述', ge=1, le=10)
参数名: str = Query(..., min_length=8, max_length=16, regex='^a'),
备注
... 必须
None 可选
'默认值' 默认值
ge 最小值 int
le 最大值 int
min_length 最小长度 str
max_length 最大长度 str
default 默认值
regex 正则表达式
alias 别名
title 标题
description 描述
deprecated=False 是否弃用
更多
路由
router实例 = APIRouter()
FastAPI实例.include_router(router实例, prefix='/chapter03', tags=['第三章'])
参数
dependencies 依赖
更多
tags=['users']
标签
summary='概括'
description='描述'
也可在方法里用 """ 描述 """ 替代
response_description='响应描述'
deprecated=False
是否弃用
返回
HTML
HTMLResponse(content=html_code)
文件
FileResponse('图片路径', filename='mm')
参数
filename 文件名称 没有此参数图片可以在浏览器内浏览
重定向
RedirectResponse("https://typer.tiangolo.com")
返回异常
raise HTTPException(status_code=400, detail='细节')
通用
状态码
status_code=201 状态码
status_code=status.HTTP_201_CREATED 状态码
响应头信息
headers={'a': 'A123'}
返回字典
return {}