持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
介绍
- FastAPI是一个用于构建API的现代、快速(高性能)的 web 框架;
- 使用 Python 3.6+ 并基于标准的 Python 类型提示;
- 支持asyncio异步操作,性能高;
- 易于学习,高效编码,bug少,且生产可用。
关键特性:
- 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic)。
- 高效编码:提高功能开发速度约 200% 至 300%。
- 更少 bug:减少约 40% 的人为(开发者)导致错误。
- 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
- 简单:设计的易于使用和学习,阅读文档的时间更短。
- 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
- 健壮:生产可用级别的代码。还有自动生成的交互式文档。
- 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
安装
- 安装FastAPI
pip3 install fastapi
- 安装uvicorn(安装一个ASGI服务器,用来拉起FastAPI写的应用)
pip3 install uvicorn
快速上手
- 创建一个
main.py文件并写入以下内容:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
# 创建了一个web服务,运行项目后访问浏览器的根路径,
# FastAPI会执行read_root函数, 该函数的返回值会作为响应内容返回给浏览器。
- 通过以下命令运行服务器:
uvicorn main:app --reload
补充解释:
uvicorn main:app命令含义如下:
main:main.py文件(一个 Python文件或模块)。app:在main.py文件中创建的app对象。--reload:让服务器在更新代码后重新启动。一般在开发时使用。
- 浏览器访问 http://127.0.0.1:8000/
你将会看到如下JSON响应:
{"Hello": "World"}
补充
- asyncio异步编码:FastAPI是异步web框架上面的应用改写成异步代码如下。
- FastAPI可以识别你定义的普通函数要同步执行,使用
async def定义的协程函数异步执行。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
- FastAPI自带交互式 API 文档(由 Swagger UI生成)
- 使用uvicorn拉起项目后浏览器访问 http://127.0.0.1:8000/docs 或者 http://127.0.0.1:8000/redoc