FASTAPI快速入门
Posted 海里的鱼2022
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FASTAPI快速入门相关的知识,希望对你有一定的参考价值。
1. why?-FASTAPI的优势
对比flask, FASTAPI更新,也意味着参考项目更少,但是性能是选择它的重要原因,看官方文档的介绍:
关键特性:
-
快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
-
高效编码:提高功能开发速度约 200% 至 300%。*
- 更少 bug:减少约 40% 的人为(开发者)导致错误。*
- 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
- 简单:设计的易于使用和学习,阅读文档的时间更短。
- 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
- 健壮:生产可用级别的代码。还有自动生成的交互式文档。
- 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
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文档
可选的文档
可选的 API 文档¶
访问 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接口
以上是关于FASTAPI快速入门的主要内容,如果未能解决你的问题,请参考以下文章