1. why?-FASTAPI的优势
对比flask, FASTAPI更新,也意味着参考项目更少,但是性能是选择它的重要原因,看官方文档的介绍:
关键特性:
快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
高效编码:提高功能开发速度约 200% 至 300%。*
2. 安装及环境准备
很简单:
pip install fastapi
pip install uvicorn
就完成了基本的环境安装,注意,要求是python3.7以上
3. 第一个例子helloworld
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
运行,查看:
fastAPI-tutorial> uvicorn helloworld:app --reload
INFO: Will watch for changes in these directories: ['D:\\虚拟仿真\\fastAPI-tutorial']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [16616] using statreload
INFO: Started server process [17880]
INFO: Waiting for application startup.
INFO: Application startup complete.
访问网页
带参数:
带参数传递:
reload自动重载功能很方便, 修改代码的时候,不用终止服务再重新打开。
4. FASTAPI为API而生
通过以上代码创建了一个具有以下功能的 API:
/
和 /items/{item_id}
接受 HTTP 请求。GET
操作(也被称为 HTTP 方法)。/items/{item_id}
路径 有一个 路径参数 item_id
并且应该为 int
类型。/items/{item_id}
路径 有一个可选的 str
类型的 查询参数 q
。可以通过在继承的swaggerUI查看自动生成的API文档
http://127.0.0.1:8000/docs
可选的文档
访问 http://127.0.0.1:8000/redoc。
5. 增加put接口,用API测试工具进行接口测试
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
#加入标准的类型声明
class Item(BaseModel):
name: str
price: float
is_offer: Optional[bool] = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}
postman 登录账号忘了, 顺便尝试下大火的ApiPost工具
ApiPost - API 文档、调试、Mock、测试一体化协作平台
测试GET接口
测试PUT接口