准备
Documentation: fastapi.tiangolo.com
Source Code: github.com/tiangolo/fa…
FastAPI 框架,高性能,易于学习,高效编码,生产可用
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。
关键特性:
- 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette(网络工具包) 和 Pydantic(数据认证))。最快的 Python web 框架之一。
- 高效编码:提高功能开发速度约 200% 至 300%。*
- 更少 bug:减少约 40% 的人为(开发者)导致错误。*
- 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
- 简单:设计的易于使用和学习,阅读文档的时间更短。
- 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
- 健壮:生产可用级别的代码。还有自动生成的交互式文档。
- 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
FastAPI可以用来做什么
- 由Sebastian Ramirez 开发
- 开发 web API
- 开发网站
- 做一个测试平台
- 做一个持续集成工具
- 生成文档
为什么要学习FastAPI
- FastAPI的使用方法和设计参考了几十个python明星项目,博采众长,吸收各家精华
- FastAPI和Fast一样简约
- FastAPI非常新,并且基于python3.6的类型声明系统
- 自动生成文档
- 类型声明和数据检验
- 内置身份认证
- 性能强
- 原生支持异步
- 强大的依赖注入系统
- GraphQL和Websocket支持
可选依赖¶
用于 Pydantic:
ujson- 更快的 JSON 「解析」。email_validator- 用于 email 校验。
用于 Starlette:
requests- 使用TestClient时安装。aiofiles- 使用FileResponse或StaticFiles时安装。jinja2- 使用默认模板配置时安装。python-multipart- 需要通过request.form()对表单进行「解析」时安装。itsdangerous- 需要SessionMiddleware支持时安装。pyyaml- 使用 Starlette 提供的SchemaGenerator时安装(有 FastAPI 你可能并不需要它)。graphene- 需要GraphQLApp支持时安装。ujson- 使用UJSONResponse时安装。
用于 FastAPI / Starlette:
你可以通过 pip install fastapi[all] 命令来安装以上所有依赖。
# python和pycharm安装
# anaconda创建虚拟环境
conda create -n fastapi python=3.9
# 进入/切换到指定名称的虚拟环境,如果不带任何参数,则默认回到全局环境base中。
# conda activate <虚拟环境名称>
conda activate fastapi
# 退出当前虚拟环境
conda deactivate
安装 FastAPI¶
# 安装所有的可选依赖及对应功能包括了 uvicorn,你可以将其用作运行代码的服务器
pip install fastapi[all] # 安装所有组件
# 分开来安装
pip install fastapi
# 安装uvicorn来作为服务器:
pip install uvicorn[standard]
创建FastAPI项目并运行
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
# 返回字符串
# return "hello world"
# 返回列表
# return ["项目1", "项目2", "项目3"]
# 返回json格式
return {"message": "Hello World"}
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
if __name__ == '__main__':
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
# uvicorn main.py:app --reload