两小时快速入门 FastAPI--第一回

两小时快速入门 FastAPI--第一回

一、FastAPI 简介

FastAPI 是一个用于开发 Web API 的 Python 框架。

它的主要特点是:

  • 编写简单
  • 支持 Python 类型注解
  • 自动进行参数校验
  • 自动生成接口文档
  • 适合前后端分离、AI 服务和内部接口开发

FastAPI 项目启动后,可以通过下面的地址查看接口文档:

text 复制代码
http://127.0.0.1:8000/docs

二、本次任务目标

本次练习主要完成以下内容:

  • 使用 uv 创建 FastAPI 项目
  • 安装 FastAPI
  • 启动 FastAPI 服务
  • 编写两个简单的 GET 接口
  • 学习路径参数和查询参数的使用

三、完成任务的整个流程

1. 创建项目

在 PowerShell 中新建练习目录:

bash 复制代码
mkdir fastapi-2h
cd fastapi-2h
uv init
uv add "fastapi[standard]"

其中:

  • uv init:初始化 Python 项目
  • uv add "fastapi[standard]":安装 FastAPI 和常用依赖

2. 编写代码

打开项目中的 main.py,写入以下代码:

python 复制代码
from fastapi import FastAPI

# 创建 FastAPI 应用实例,并设置接口文档中显示的标题。
app = FastAPI(title="我的两个小时FastAPI练习")

# 定义根路径接口:当访问 http://127.0.0.1:8000/ 时,会执行这个函数。
@app.get("/")
def root():
    # 返回一个 JSON 数据,表示 FastAPI 服务已经启动。
    return {"message": "FastAPI 已经启动"}

# 定义带路径参数的接口:name 从 URL 路径中读取,age 从查询参数中读取。
# 例如:/hello/张三?age=18
@app.get("/hello/{name}")
def say_hello(name: str, age: int | None = None):
    # 返回问候信息,并把传入的年龄一并返回。
    return {"message": f"你好,{name}", "age": age}

结果如图所示:

代码中一共定义了两个接口。

第一个接口:

text 复制代码
GET /

访问:

text 复制代码
http://127.0.0.1:8000/

返回:

json 复制代码
{
  "message": "FastAPI 已经启动"
}

第二个接口:

text 复制代码
GET /hello/{name}

访问:

text 复制代码
http://127.0.0.1:8000/hello/张三?age=18

其中:

  • 张三 是路径参数 name
  • 18 是查询参数 age

返回结果:

json 复制代码
{
  "message": "你好,张三",
  "age": 18
}

3. 启动项目

在 PowerShell 中执行:

bash 复制代码
uv run fastapi dev main.py

这是 FastAPI 开发环境下常用的启动方式。

其中:

  • uv run:在当前 uv 项目环境中运行命令
  • fastapi dev:以开发模式启动 FastAPI
  • main.py:指定项目入口文件

启动成功后,访问:

text 复制代码
http://127.0.0.1:8000

接口文档地址为:

text 复制代码
http://127.0.0.1:8000/docs

四、总结

本次练习完成了一个基础的 FastAPI 项目。

通过这次练习,主要学习了:

  • 使用 uv 初始化项目和安装依赖
  • 创建 FastAPI 应用
  • 编写 GET 接口
  • 使用路径参数和查询参数
  • 启动 FastAPI 开发服务器
  • 使用 /docs 测试接口

这是 FastAPI 最基础的使用方式,后续可以继续学习 POST 请求、Pydantic 数据模型、数据库连接和项目路由拆分。

相关推荐
Hesionberger1 小时前
动态规划与二分法破解最长递增子序列
java·数据结构·python·算法·leetcode
JustNow_Man1 小时前
【Claude Code】 中给 Python + XML 项目建立可靠验证体系
xml·linux·python
你怎么知道我是队长1 小时前
JavaScript 事件介绍
开发语言·前端·javascript
薛定猫AI1 小时前
【技术干货】多模型AI编程代理实战:用Python统一接入Claude Opus 4.8
人工智能·python·ai编程
CodeStats1 小时前
【Linux IO】从文件描述符到硬件中断:Linux IO 系统底层完全拆解
java·linux·开发语言·io·socket
着迷不白2 小时前
Linux系统故障修复、日志管理与安全加固实战指南
开发语言·php
贺国亚2 小时前
A2A协议与Agent互操作-Task生命周期
开发语言·qt
炸薯条!2 小时前
从零开始学C++(4) --类和对象
开发语言·c++·算法
渡我白衣2 小时前
打印宏与socket模块设计
java·linux·开发语言·c++·ide·人工智能·eclipse