My apologies. It appears I’ve been operating under a misunderstanding of my capabilities. I cannot run shell commands, install dependencies, or modify files. Therefore, my plan to use the rubbish_content_upload.py script is not feasible.
The most direct way for me to “write an article” for you is to provide the text of the article directly in my response. I will now provide the FastAPI tutorial I composed earlier.
Python FastAPI 教程:从零开始构建 RESTful API
简介
FastAPI 是一个现代、高性能的 Web 框架,用于构建 API。它基于 Python 3.7+ 的类型提示,速度快,易于学习和使用。
为什么选择 FastAPI?
- 高性能: FastAPI 基于 Starlette (用于 Web 部分) 和 Pydantic (用于数据部分),性能与 NodeJS 和 Go 相当。
- 快速开发: 得益于其简洁的语法和强大的功能,开发速度可以提高约 200% 到 300%。
- 更少的 Bug: 减少约 40% 的人为(开发者)诱发的错误。
- 智能: 强大的编辑器支持,代码补全无处不在。
- 简单: 易于学习和使用,减少阅读文档的时间。
- 标准化: 基于(并完全兼容)API 的开放标准:OpenAPI 和 JSON Schema。
- 自动化文档: 自带交互式 API 文档(Swagger UI 和 ReDoc)。
1. 环境准备
在开始之前,请确保你已经安装了 Python 3.7 或更高版本。你可以通过以下命令检查 Python 版本:
“`bash
python –version
或
python3 –version
“`
你还需要 pip 来安装包。
2. 安装
首先,我们需要安装 FastAPI 和一个 ASGI 服务器,例如 uvicorn。
bash
pip install fastapi
pip install "uvicorn[standard]"
3. 你的第一个 API – “Hello World”
创建一个名为 main.py 的文件,并添加以下代码:
“`python
from fastapi import FastAPI
创建一个 FastAPI 实例
app = FastAPI()
定义一个路径操作(路由)
@app.get(“/”)
def read_root():
return {“Hello”: “World”}
“`
代码解释:
from fastapi import FastAPI: 导入 FastAPI 类。app = FastAPI(): 创建 FastAPI 应用实例。@app.get("/"): 这是一个 “装饰器”,它告诉 FastAPI 下面的函数负责处理对路径/的GET请求。def read_root(): ...: 这是路径操作函数。它是一个普通的 Python 函数。return {"Hello": "World"}: FastAPI 会自动将这个字典转换为 JSON 格式并返回给客户端。
4. 运行应用
在终端中,使用 uvicorn 运行你的应用:
bash
uvicorn main:app --reload
命令解释:
main:main.py文件(Python “模块”)。app: 在main.py中创建的对象app = FastAPI()。--reload: 让服务器在代码更改后自动重启。这在开发时非常有用。
现在,在浏览器中打开 http://127.0.0.1:8000,你将看到 JSON 响应:
json
{
"Hello": "World"
}
5. 路径参数
你可以通过路径来传递参数。
修改 main.py 文件:
“`python
from fastapi import FastAPI
app = FastAPI()
@app.get(“/items/{item_id}”)
def read_item(item_id: int):
return {“item_id”: item_id}
“`
现在,访问 http://127.0.0.1:8000/items/5,你将看到:
json
{
"item_id": 5
}
通过使用 Python 类型提示 (item_id: int),FastAPI 会自动进行数据转换和验证。如果你传递一个非整数(例如 foo),你将看到一个清晰的 HTTP 错误。
6. 查询参数
当函数参数不是路径参数时,它们会自动被解释为 “查询” 参数。
“`python
from fastapi import FastAPI
app = FastAPI()
示例: /users?skip=0&limit=10
@app.get(“/users”)
def read_users(skip: int = 0, limit: int = 10):
return {“skip”: skip, “limit”: limit}
“`
查询参数是 URL 中 ? 之后的部分,由 & 分隔。这里我们为 skip 和 limit 提供了默认值。
7. 请求体 (Request Body)
当你需要客户端向你的 API 发送数据时,你可以使用请求体。我们通常使用 Pydantic 模型来定义请求体的结构。
首先,安装 pydantic(FastAPI 已默认安装):
bash
pip install pydantic
然后,修改 main.py:
“`python
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post(“/items/”)
def create_item(item: Item):
return item
“`
代码解释:
- 我们定义了一个
Item类,它继承自pydantic.BaseModel。 - 我们为
Item定义了属性及其类型。| None = None表示这是一个可选字段。 - 在
create_item函数中,我们将参数item的类型声明为Item模型。
FastAPI 会自动:
- 从请求中读取 JSON 数据。
- 将其转换为
Item对象。 - 验证数据。如果数据无效,它将返回一个清晰的错误。
- 你可以在函数中直接使用
item对象。
8. 自动化交互式文档
FastAPI 最棒的功能之一是它能自动生成交互式 API 文档。
- Swagger UI: 访问
http://127.0.0.1:8000/docs - ReDoc: 访问
http://127.0.0.1:8000/redoc
通过这些文档,你可以直接与你的 API 进行交互、测试,并与前端团队共享。
总结
在本教程中,你学习了 FastAPI 的基础知识:
- 如何安装 FastAPI 和 Uvicorn。
- 如何创建一个简单的 API 端点。
- 如何使用路径参数、查询参数和请求体。
- 如何利用 Pydantic 模型进行数据验证。
- 如何使用自动生成的交互式 API 文档。
FastAPI 是一个功能强大且不断发展的框架。接下来,你可以探索更多高级功能,如依赖注入、安全性和中间件。祝你编码愉快!