
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。
关键特性
-
快速:可与 NodeJS
和Go
并肩的极高性能(归功于 Starlette 和 Pydantic)。 -
高效编码:提高功能开发速度约 200% 至 300%。* -
更少 bug:减少约 40% 的人为(开发者)导致错误。* -
智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。 -
简单:设计的易于使用和学习,阅读文档的时间更短。 -
简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。 -
健壮:生产可用级别的代码。还有自动生成的交互式文档。 -
标准化:基于(并完全兼容)API 的相关开放标准: OpenAPI
(以前被称为 Swagger) 和 JSON Schema。
依赖
-
Python 3.6 及更高版本
-
FastAPI 站在以下巨人的肩膀之上:
-
Starlette 负责 web 部分。 -
Pydantic 负责数据部分。
安装
pip install fastapi
你还会需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn。
pip install "uvicorn[standard]"
示例
创建
创建一个 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}
运行
通过以下命令运行服务器:
uvicorn main:app --reload
检查
使用浏览器访问 http://127.0.0.1:8000/items/5?q=somequery
。
你将会看到如下 JSON 响应:
{"item_id": 5, "q": "somequery"}
你已经创建了一个具有以下功能的 API:
-
通过 路径 /
和/items/{item_id}
接受 HTTP 请求。 -
以上 路径 都接受 GET
操作(也被称为 HTTP 方法)。 -
/items/{item_id}
路径 有一个 路径参数item_id
并且应该为int
类型。 -
/items/{item_id}
路径 有一个可选的str
类型的 查询参数q
。
交互式 API 文档
现在访问 http://127.0.0.1:8000/docs
。你会看到自动生成的交互式 API 文档(由 Swagger UI 生成):

访问 http://127.0.0.1:8000/redoc
。你会看到另一个自动生成的文档(由 ReDoc 生成):

传送门
开源协议:MIT
开源地址:https://github.com/tiangolo/fastapi
项目合集:https://github.com/OpenTechCol/OpenTechCol
-END-
原文始发于微信公众号(开源技术专栏):用于构建 API 的现代、快速(高性能)的 web 框架 FastAPI
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155294.html