1.简介
- FastAPI 是一个现代化的高性能 Web 框架,可用于构建 API 和微服务。它基于 Python 语言,充分利用了 Python 3.6+ 中的异步语法,同时使用 Pydantic 库来提供自动数据验证和文档生成。FastAPI 的设计旨在提高开发速度、代码可维护性和生产环境的性能表现。
- FastAPI 包含官方支持的自动化文档生成、请求数据验证、负载平衡、高性能、标准 API 错误响应等功能,同时还支持许多第三方插件、中间件和工具。
- 相比于常用的 Flask 和 Django 框架,FastAPI 代码量更少,而且能够快速启动、编写和测试异步代码。它是一个非常适合构建现代化 Web 服务的框架,能够在大型团队中提高产品开发的效率和质量。
- FastAPI跟Flask有许多相似的地方,比如写路由的方法都是在函数上写路由,比如orm模型,官方都是使用第三方库sqlalchemy,写接口方面可以说是Flask框架的强化版,因为支持异步,所以性能更佳。
2.关键特性
-
快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
-
高效编码:提高功能开发速度约 200% 至 300%。*
- 更少 bug:减少约 40% 的人为(开发者)导致错误。*
- 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
- 简单:设计的易于使用和学习,阅读文档的时间更短。
- 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
- 健壮:生产可用级别的代码。还有自动生成的交互式文档。
- 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema
3.部分赞助商
4.两大核心组件
- Starlette 负责 web 部分。它是一个支持异步网络服务的框架/工具包,是构建高性能Asycio服务的理性选择。
- Pydantic 负责数据部分。它是一个基于python类型提示来定义数据验证,序列化和文档的库。
5.安装¶
pip install fastapi
████████████████████████████████████████ 100%
restart ↻
你还会需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn。
pip install "uvicorn[standard]"
████████████████████████████████████████ 100%
restart ↻
6.示例¶
创建¶
- 创建一个
main.py
文件并写入以下内容:
from typing import Union
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: Union[str, None] = None):
return {"item_id": item_id, "q": q}
或者使用 async def
...
运行¶
通过以下命令运行服务器:
uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
restart ↻
The end! Thanks!