FastAPI学习(一)
Python的异步
Concurrency和Parallel适用的场景不同,Concurrency适合IO-bound任务,Parallel适合CPU-bound任务。
留意Python中async和await的用法,在IO-bound操作中正确使用,提高效率。
FastAPI对Concurrency和Parallel都进行了比较好的使用。
环境变量
环境变量是将一些不想打包到项目中的配置信息进行持久化存储的好位置,Python程序可以方便进行读,不能进行写。
可以学习一下"twelve-factor"理论,对项目进行优化。
FastAPI入门
运行项目的方法:
fastapi dev main.py
FastAPI使用OpenAPI标准的schema来规范API
写最简单的项目的步骤:
- from fastapi import FastAPI
- 创建实例 app = FastAPI()
- 设置operation和path @app.get("/")
- 写函数
传参数
把参数传到函数里面:
@app.get("/items/{item_id}")
async def read_item(item_id: int):return {"item_id": item_id}
如上所示,当函数参数中声明了变量类型时,FastAPI会帮我们自动转换类型。
此外,在匹配path时,代码中写在前面的模式会被优先匹配到,所以要把前缀相同的固定path写在变量path之前,否则这个固定的词就会一直被当做变量来处理。比如:/items/me要放在/items/{name}之前。
还可以用Enum类来限定参数的选项范围。
可以通过@app.get("items/{file_path:path}")来传递path参数,被传递的参数必须要以/开头,最终,整个URL就会在items之后有双斜杠//。
除了path parameter之外,还有query parameter,在URL的末尾添加?name=1&class=2,直接在函数里接受这些参数即可。
收结果
from pydantic import BaseModel
自己创建一个BaseModel的子类,规定好数据格式,然后就可以返回这个格式。