FastAPI 入门教学

FastAPI 入门教学

在当今快速迭代的软件开发环境中,选择一个高效且易用的框架至关重要。Python 的 FastAPI 正是这样一个集速度与灵活性于一身的现代化 Web 框架。本文将带你初步了解 FastAPI 的基本用法,并通过一些实例加深理解。

一、安装 FastAPI

首先,确保你已经安装了 Python 和 pip。然后,通过以下命令安装 FastAPI 及其依赖的 Uvicorn 服务器:

bash 复制代码
pip install fastapi uvicorn

二、创建第一个 API

接下来,创建一个简单的 FastAPI 应用。新建一个 Python 文件,比如 main.py,并编写以下代码:

python 复制代码
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

这段代码定义了一个简单的 API,当访问根路径 / 时,返回 JSON 格式的数据。

三、运行服务器

使用 Uvicorn 运行这个 FastAPI 应用:

bash 复制代码
uvicorn main:app --reload

--reload 参数表示在代码更改时自动重新加载服务器,方便开发调试。

四、访问 API

打开浏览器或使用 API 测试工具(如 Postman),访问 http://127.0.0.1:8000/,你将看到返回的 JSON 数据:{"Hello": "World"}

五、更多实例

1. 使用 Pydantic 进行数据验证

Pydantic 是 FastAPI 的一个核心依赖,用于数据验证和设置管理。下面是一个使用 Pydantic 模型的例子:

python 复制代码
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

在这个例子中,我们定义了一个 Item 模型,包含 nameprice 两个字段。当发送 PUT 请求到 /items/{item_id} 时,FastAPI 会自动验证请求体中的数据是否符合 Item 模型的规范。

2. 处理文件上传

FastAPI 也可以方便地处理文件上传。下面是一个文件上传的例子:

python 复制代码
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
import shutil

app = FastAPI()

UPLOAD_FOLDER = "./uploads"

@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
    with open(f"{UPLOAD_FOLDER}/{file.filename}", "wb") as buffer:
        shutil.copyfileobj(file.file, buffer)
    return HTMLResponse(content=f"<p>File uploaded successfully: {file.filename}</p>")

在这个例子中,我们定义了一个 POST 路由 /uploadfile/,接受一个文件作为请求体。文件会被保存到 ./uploads 文件夹中,并返回一个 HTML 响应,告知用户文件已成功上传。

3. 异步处理

FastAPI 支持异步编程,可以高效地处理大量并发请求。下面是一个异步处理的例子:

python 复制代码
import asyncio
from fastapi import FastAPI

app = FastAPI()

@app.get("/async-test")
async def async_test():
    await asyncio.sleep(2)  # 模拟耗时操作
    return {"message": "Async operation completed"}

在这个例子中,我们定义了一个 GET 路由 /async-test,当访问该路由时,服务器会模拟一个耗时操作(等待 2 秒),然后返回一个 JSON 响应。由于使用了异步编程,这个操作不会阻塞其他请求的处理。

通过以上步骤和实例,你已经对 FastAPI 有了更深入的了解。FastAPI 还支持许多其他高级功能,如依赖注入、中间件、错误处理等,值得进一步深入学习。希望这篇文章能帮你快速上手 FastAPI,享受高效开发的乐趣!

相关推荐
Livingbody1 小时前
Fast Whisper 语音转文本
后端
程序员岳焱1 小时前
深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?
java·人工智能·后端
G探险者1 小时前
《深入理解 Nacos 集群与 Raft 协议》系列五:为什么集群未过半,系统就不可用?从 Raft 的投票机制说起
分布式·后端
G探险者1 小时前
《深入理解 Nacos 集群与 Raft 协议》系列一:为什么 Nacos 集群必须过半节点存活?从 Raft 协议说起
分布式·后端
G探险者1 小时前
《深入理解 Nacos 集群与 Raft 协议》系列四:日志复制机制:Raft 如何确保提交可靠且幂等
分布式·后端
G探险者1 小时前
《深入理解 Nacos 集群与 Raft 协议》系列三:日志对比机制:Raft 如何防止数据丢失与错误选主
分布式·后端
G探险者1 小时前
《深入理解 Nacos 集群与 Raft 协议》系列二:Raft 为什么要“选主”?选主的触发条件与机制详解
分布式·后端
我的golang之路果然有问题1 小时前
云服务器部署Gin+gorm 项目 demo
运维·服务器·后端·学习·golang·gin
Java水解1 小时前
彻底解决Flask日志重复打印问题:从原理到实践
后端·flask
Nick同学1 小时前
GatewayWorker 使用总结
后端·php