通过Python FastAPI开发一个快速的 Web API 项目
Python 2025-02-07
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,专为在 Python 中构建 RESTful API 而设计。
FastAPI 使用 Python 3.8+ 并基于标准的 Python 类型提示。
FastAPI 建立在 Starlette 和 Pydantic 之上,利用类型提示进行数据处理,并自动生成API文档。
FastAPI 于 2018 年 12 月 5 日发布第一版本,以其易用性、速度和稳健性在开发者中间迅速流行起来。
FastAPI 支持异步编程,可在生产环境中运行。
php编码可以通过与FastAPI 搭建的web api通讯,实现python与php之间的调用。也就是php可以通过FastAPI 搭建的web api调用Python代码。
FastAPI 安装
FastAPI 依赖 Python 3.8 及更高版本。
安装 FastAPI 很简单,这里我们使用 pip 命令来安装。
另外我们还需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn:
这样我们就安装完成了。
运行第一个 FastAPI 应用
创建一个名为 main.py 的文件,添加以下代码:
实例
在命令行中运行以下命令以启动应用:
现在,打开浏览器并访问 http://127.0.0.1:8000,你应该能够看到 FastAPI 自动生成的交互式文档,并在根路径 ("/") 返回的 JSON 响应。

接下来我们来丰富下代码功能,并做具体说明。
以下的 FastAPI 应用,使用了两个路由操作(/ 和 /items/{item_id}):
实例
注意,这里引入了from typing import Union。
请求头和 Cookie
使用 Header 和 Cookie 类型注解获取请求头和 Cookie 数据。
实例
FastAPI 使用 Python 3.8+ 并基于标准的 Python 类型提示。
FastAPI 建立在 Starlette 和 Pydantic 之上,利用类型提示进行数据处理,并自动生成API文档。
FastAPI 于 2018 年 12 月 5 日发布第一版本,以其易用性、速度和稳健性在开发者中间迅速流行起来。
FastAPI 支持异步编程,可在生产环境中运行。
php编码可以通过与FastAPI 搭建的web api通讯,实现python与php之间的调用。也就是php可以通过FastAPI 搭建的web api调用Python代码。
FastAPI 安装
FastAPI 依赖 Python 3.8 及更高版本。
安装 FastAPI 很简单,这里我们使用 pip 命令来安装。
pip install fastapi
另外我们还需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn:
pip install "uvicorn[standard]"
这样我们就安装完成了。
运行第一个 FastAPI 应用
创建一个名为 main.py 的文件,添加以下代码:
实例
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
在命令行中运行以下命令以启动应用:
uvicorn main:app --reload
现在,打开浏览器并访问 http://127.0.0.1:8000,你应该能够看到 FastAPI 自动生成的交互式文档,并在根路径 ("/") 返回的 JSON 响应。

接下来我们来丰富下代码功能,并做具体说明。
以下的 FastAPI 应用,使用了两个路由操作(/ 和 /items/{item_id}):
实例
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}
注意,这里引入了from typing import Union。
请求头和 Cookie
使用 Header 和 Cookie 类型注解获取请求头和 Cookie 数据。
实例
from fastapi import Header, Cookie
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def read_item(user_agent: str = Header(None), session_token: str = Cookie(None)):
return {"User-Agent": user_agent, "Session-Token": session_token}