框架入门"/>
FastAPI框架入门
FastAPI框架入门
- 介绍
- 安装
- 入门
- swagger 可交互api文档
- redoc
- 传参
- get传参
- json和form表单传参
- 使用枚举限定参数
- URL传递路径参数
- 上传文件
- 开始一个项目
- 项目布局
- router(类似FLASK蓝图)
- main.py文件
- appapi目录下__init__.py
- config.py
- 写一个自定义用户token验证
介绍
- 快速:非常高的性能、异步框架,看齐的NodeJS和Go(感谢Starlette和Pydantic)。现有最快的Python框架之一。
- 快速编码:将功能开发速度提高约200%至300%。
- 自动:不需要开发人员去校对数据类型
- 健壮:获取可用于生产的代码。具有自动交互式文档。
- 基于标准:基于(并完全兼容)API的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。
安装
环境: Python3.7.7,Windows10
pip install fastapi uvicorn # fastapi以及启动用
pip install aiofiles jinja2 # 配置使用静态文件和模板文件需要
pip install python-multipart # form表单数据需要
- 如果pip install fastapi[all] 会安装所有模块,不建议使用
入门
from fastapi import FastAPIapp = FastAPI()@app.get("/") # 监听GET请求
async def read_root():return {"Hello": "World"} # 返回json
然后运行即可,默认端口是8000,reload即Debug模式开
端口运行
uvicorn main:app --reload
也可以在main.py里加上这段代码,然后python main.py运行
import uvicornif __name__ == '__main__':uvicorn.run('main:app', reload=True,host='0.0.0.0', port=8000)
swagger 可交互api文档
- 打开127.0.0.1:8000/docs 即可,可交互api文档
redoc
- 127.0.0.1:8000/redoc, 接口文档
传参
get传参
- get请求时,参数通常在url拼接参数和query方式
- 举例:http://127.0.0.1:8000/user/10?mod=login
@app.get("/user/{user_id}")
async def user_mod(user_id: int, mod: str = None): # str = None 代表mod参数可以为空return {"user_id": user_id,"mod": mod}
json和form表单传参
- form-data方式时需要pip安装python-multipart
- 可以使用我们可以采用 application/json 的方式传参, 并且定义一个参数类来管控参数
from fastapi import FastAPI
from fastapi import Form
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel): # 定义一个类用作参数name: strprice: floatis_offer: bool = None # 该字段可为空@api.post("/{item_id}")
async def get_item(item_id: int = 1, item: Item, form_param: str = Form(...)): # item需要与Item对象定义保持一致# Form(...)代表必填return {"item_name": item.name,"item_id": item_id,'form_param': form_param # 这是form参数}
接口文档界面可以查看参数并进行测试
使用枚举限定参数
from enum import Enumclass ModelName(str, Enum):alexnet = "alexnet"resnet = "resnet"lenet = "lenet"@app.get("/model/{model_name}")
更多推荐
FastAPI框架入门
发布评论