跳转至

基础

官网

文档

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类 或 SQLModel类
    名称: 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 {}