一、简介
FastAPI是一个现代的、快速(高性能)的Python Web框架,基于标准的Python类型提示,使用Python 3.6+构建API。它是一个现代的web框架,可以快速地开发应用程序,具有以下主要特点:
- 快速:FastAPI的性能非常高,与NodeJS和Go相当,是最快的Python框架之一。
- 快速编码:FastAPI能够将开发速度提高约200%到300%,使得开发过程更加高效。
- 更少的bug:FastAPI的设计减少了大约40%的开发人员人为引起的错误,提高了代码的质量。
- 直观:FastAPI具有强大的编辑器支持,调试时间更短,使得开发过程更加便捷。
- 简单:FastAPI易于使用和学习,阅读文档的时间更短,使得开发者能够更快地掌握其使用方法。
- 代码简洁:FastAPI尽量减少代码重复,每个参数可以声明多个功能,从而减少了程序的bug。
- 健壮:FastAPI的生产代码会自动生成交互式文档,基于并完全兼容API的开放标准:OpenAPI和JSON模式,使得其具有更强的健壮性。
二、安装FastAPI
pip install fastapi
FastAPI启动依赖Uvicorn,需要安装Uvicorn
pip install uvicorn
三、学会使用FastAPI
3.1 无参示例
从输出Hello World开始
代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def index():
return "Hello World"
终端输入启动指令
uvicorn main:app --reload
main: 这是你的主应用模块的名称。通常,你会在main.py文件中定义你的应用和路由
app: 在main.py文件中创建的对象,app = FastAPI()创建
--reload: 让Uvicorn在源代码发生更改时自动重新加载应用
3.2 携带参数示例
from fastapi import FastAPI
app = FastAPI()
@app.get("/{id}")
def index(id:int,name:str=None):
return f"id:{id},name:{name}"
运行后根据网址打开浏览器结果显示:
四、API文档
在浏览器中输入下面网址,自动生成交互式API文档
127.0.0.1:8000/docs
点击default中的Get这行显示
然后再点击右上角的Try it out按钮 此时可以通过输入参数后点击Execute 进行测试
下面就是返回响应的结果了
五、指定路径顺序
确保固定路径在不固定的路径之前,因为路径操作是按照顺序评估的,所以根据下面的示例所示确保/id/name在/id/{name}之前,因为/id/{name}的路径也匹配/id/name
示例:
from fastapi import FastAPI
app = FastAPI()
@app.get("/id/name")
def index_name():
return "Hello Python"
@app.get("/id/{name}")
def index(name:str=None):
return f"Hello name:{name}"
六、Request Body请求体
示例:
from fastapi import FastAPI
from pydantic import BaseModel
# 创建一个 FastAPI 应用实例
app = FastAPI()
# 定义一个数据模型(Item),包含四个字段:name、username、age 和 school
class Item(BaseModel):
name: str # 姓名
username: str # 用户名
age: int # 年龄
school: str = None # 学校,默认为 None
# 定义一个异步函数,处理 POST 请求到 /item 路径,参数为 Item 类型的数据
@app.post("/item")
async def item(item: Item):
# 返回请求中的数据
return item
七、Head请求头参数
示例:
from fastapi import FastAPI, Header
app = FastAPI()
def get_token(token: str = Header(...)):
return {"token": token}
@app.get("/items/")
async def read_items(token: str = Header(...)):
return {"token":token}
八、Form表单
使用Form类需要安装python-multipart
安装命令:
pip install python-multipart
示例:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/form/")
async def handle_form_data(name: str = Form(...), age: int = Form(...)):
return {"name": name, "age": age}