Web初识与FastAPI入门

Web初识与FastAPI入门

2026年9月20日·#编程学习/python学习笔记Python/Web开发·1222 字 6 分钟
浏览量加载中...
AI 摘要- DeepSeek

Web 网站的三个组成部分与 FastAPI 的四步入门用法、两种启动方式,以及 uvicorn 是什么

封面图
Web初识与FastAPI入门 - 封面图

Web 初识#

Web:全球广域网,也称为万维网(www,World Wide Web),能够通过浏览器访问到的网站。

一个 Web 网站由三个核心部分组成:

部分作用用什么做
前端程序界面展示HTML(结构)+ CSS(表现)+ JavaScript(行为)
服务端程序业务逻辑处理Python 里可用 Django / Flask / FastAPI
数据库数据存储和管理MySQL 等(本章案例用 JSON 文件代替)
Note

前端三件套的分工在第 4 章(爬虫)里已经见过:HTML 管结构、CSS 管样式、JS 管交互。这里要写的是服务端。

FastAPI 是什么#

FastAPI 是一个现代、快速、高性能的 Web 框架,用于基于标准的 Python 类型提示构建 API 接口服务。

官网:https://fastapi.org.cn

API 接口:应用程序编程接口(Application Programming Interface),就是对外提供的功能入口,供别人来调用(比如天气查询的 API 接口)。一次调用的过程就是:客户端发 HTTP 请求 → 服务端返回 HTTP 响应。

四步写出第一个接口#

from fastapi import FastAPI # 1. 导入 FastAPI
app = FastAPI() # 2. 创建 FastAPI 实例
@app.get("/") # 3. 创建路径操作函数,定义访问路径
def root():
return {"message": "Hello World"}
@app.get("/users")
def get_users():
return [
{"id": 1, "name": "张三"},
{"id": 2, "name": "李四"},
{"id": 3, "name": "王五"},
]
if __name__ == "__main__": # 4. 运行 FastAPI 服务
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
步骤代码
1. 导入from fastapi import FastAPI
2. 创建实例app = FastAPI()
3. 定义接口@app.get("/路径") + 函数(函数返回值就是接口返回的数据)
4. 运行服务命令行 fastapi dev "xxxx.py" 或 uvicorn xxxx:app --reload;也可以写在代码里 uvicorn.run(...)

两种启动方式#

Terminal window
# 方式一:FastAPI 官方 CLI
fastapi dev "main.py"
# 方式二:直接用 uvicorn(xxxx:app 表示"文件:FastAPI实例名")
uvicorn main:app --reload
名词说明
uvicorn专门为现代 Python Web 框架(FastAPI、Starlette)设计的高性能服务器
main:app文件 main.py 里的 app 对象
--reload改代码后自动重启(开发时用)
Tip

启动后浏览器打开 http://127.0.0.1:8000 就能看到接口返回的 JSON;FastAPI 还自带交互式接口文档,打开 /docs 就能直接在网页上试接口——这也是它比 Django/Flask 更适合做 API 的地方。

相关#

练习题#

一、知识回顾(读完直接做下面的实践题)#

  1. Web 全称万维网(World Wide Web),是能通过浏览器访问到的网站
  2. 网站三部分:前端程序负责界面展示、服务端程序负责业务逻辑、数据库负责数据存储管理
  3. 前端网页由 HTML(结构)、CSS(样式)、JavaScript(行为)组成
  4. Python 中开发服务端可以用 Django、Flask 或 FastAPI
  5. FastAPI 是现代、快速、高性能的 Web 框架,基于 Python 的类型提示构建 API
  6. API 接口就是对外提供的功能入口,供别人调用
  7. FastAPI 四步:导入 → 创建 FastAPI 实例 → 创建路径操作函数 → 运行服务
  8. 两个启动命令:fastapi dev "main.py" 或 uvicorn main:app --reload
  9. uvicorn 是专门为 FastAPI/Starlette 设计的高性能服务器

二、裸写题#

  • 2-1 第一个接口 写一个 FastAPI 程序:/ 返回 {"message": "Hello World"},/users 返回 3 个用户的列表。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:创建实例 → 用装饰器把函数”挂”到路径上 二级 · 方法:app = FastAPI() / @app.get("/") 三级 · 骨架:函数返回字典或列表,FastAPI 会自动转成 JSON

    参考答案(做完再点开)
    # 2-1
    from fastapi import FastAPI
    app = FastAPI(title="入门练习")
    USERS = [
    {"id": 1, "name": "张三"},
    {"id": 2, "name": "李四"},
    {"id": 3, "name": "王五"},
    ]
    @app.get("/")
    def root():
    return {"message": "Hello World"}
    @app.get("/users")
    def get_users():
    return USERS
  • 2-2 带路径参数的接口 再加一个 /users/{user_id} 接口:根据路径里的编号返回对应用户(编号不存在就返回提示)。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:路径里的花括号就是”路径参数”,要写进函数形参 二级 · 方法:@app.get("/users/{user_id}") + def get_user(user_id: int): 三级 · 骨架:user_id: int 会让 FastAPI 自动把字符串转成整数

    参考答案(做完再点开)
    # 2-2
    @app.get("/users/{user_id}")
    def get_user(user_id: int):
    for user in USERS:
    if user["id"] == user_id:
    return user
    return {"message": "用户不存在"}
  • 2-3 用测试客户端验证 不启动服务器,用 FastAPI 自带的测试客户端直接请求上面几个接口,打印状态码和返回内容。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:像写单元测试一样调接口,不用真的开服务器 二级 · 方法:from fastapi.testclient import TestClient / client = TestClient(app) 三级 · 骨架:print(response.status_code, response.json())

    参考答案(做完再点开)
    # 2-3:不启动服务器也能测
    from fastapi.testclient import TestClient
    if __name__ == "__main__":
    client = TestClient(app)
    for path in ["/", "/users", "/users/2", "/users/99"]:
    resp = client.get(path)
    print(path, resp.status_code, resp.json())
    # 真正启动服务时用:
    # fastapi dev main.py 或 uvicorn main:app --reload

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# AI绘图1# AI辅助开发2# Ajax7# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc4# CSS10# DeepSeek6# deepseek2# DELETE1# Docker5# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML9# HTTP10# ImageManager1# Java23# java13# JavaScript11# JavaWeb113# JDBC7# JSON2# JUnit1# LangChain25# Linux4# Logback1# Maven17# Muse Spark1# Mybatis1# MyBatis18# MySQL45# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python70# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot37# SpringMVC5# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue20# Waline3# Web3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端52# 动态1# 动漫1# 包1# 单词2# 博客8# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 后端48# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 实战4# 对象1# 导航栏1# 工具2# 布局2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程2# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常95# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试3# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 表单1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部署11# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 项目实战11# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]