失踪人口回归!后续会更新一些学习FastAPI的学习笔记,学习课程源于黑马程序员
一、代码整体说明
基于Python的FastAPI框架编写的极简后端API服务,仅用十几行代码就实现了2个可对外访问的HTTP接口,支持通过浏览器/接口工具发起请求并获取JSON格式的返回结果,是FastAPI最入门的标准示例。

二、逐行详细代码解释
1. 导入核心类
python
from fastapi import FastAPI
- 作用:从fastapi这个第三方Python库中,导入它的核心类FastAPI。
- 通俗理解:相当于把别人写好的、用来快速搭建后端接口的"工具包"里最核心的"主工具"拿过来,后续所有功能都要基于它实现。
2. 注释与创建应用实例
python
Python
# 创建 FastAPI 实例
app = FastAPI()
- 第一行# 开头的是注释:Python运行时会完全忽略注释,仅给开发者看的说明文字,不影响代码执行。
- 第二行app = FastAPI():调用FastAPI类的构造方法,创建一个FastAPI应用实例,赋值给变量app。
- 这个app是整个后端服务的核心对象,后续所有接口的定义、服务的配置、启动都要围绕它来完成。
3. 第一个接口:根路径接口
python
Python
@app.get("/")
async def root():
return {"message": "Hello World"}
这三行代码完整定义了一个可对外访问的接口,我们拆解开:
这三行代码完整定义了一个可对外访问的接口,我们拆解开:
1.@app.get("/")
- 这是Python的装饰器语法,是FastAPI的核心路由功能。
- @app.get:指定这个接口接收HTTP协议的GET请求(浏览器打开网址、获取数据默认用的就是GET请求)。
- ("/"):指定接口的URL路径为根路径 ,比如服务启动后,访问http://127.0.0.1:8000/就会触发这个接口。
- 整体作用:给下面的函数贴一个"标签",告诉FastAPI:"如果有人用GET方式访问网站根路径,就执行我下面的root函数"。
2.async def root():
- async def:Python用来定义异步函数 的语法,和普通def函数区分开。
- root:我们自定义的函数名,可随意修改,只要和装饰器绑定即可。
- 整体作用:定义接口的处理函数,当用户访问对应路径时,FastAPI会自动执行这个函数里的代码。
3.return {"message": "Hello World"}
- 函数的返回值:这里返回了一个Python字典(dict)。
- FastAPI的内置能力:会自动把这个Python字典转换成前后端通用的JSON格式数据,返回给发起请求的客户端(浏览器、Postman等),同时自动设置好正确的响应头,无需开发者手动处理。
4. 第二个接口:带路径参数的打招呼接口
python
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
这是一个带动态参数的接口,我们逐行解释:
1.@app.get("/hello/{name}")
- 同样是GET请求的路由装饰器,路径为/hello/{name}。
- {name}是FastAPI的路径参数 语法:这个大括号包裹的部分是URL里的可变内容,FastAPI会自动把这个位置的内容,提取成名为name的参数,传递给下面的函数。
- 举个例子:访问http://127.0.0.1:8000/hello/张三,name的值就是张三;访问http://127.0.0.1:8000/hello/李四,name的值就是李四,无需为每个名字单独写接口。
2.async def say_hello(name: str):
- 同样是异步处理函数,函数名say_hello为自定义。
- 括号里的name: str是Python的类型注解(Type Hint) :声明name这个参数的类型必须是字符串(str)。
- FastAPI会利用这个类型注解做2件核心事:
- 自动校验参数类型:如果用户传入的不是字符串,会直接返回友好的错误提示,无需开发者手动写校验代码;
- 自动生成接口文档:在自带的可视化文档里标注参数类型,方便调试。
3.return {"message": f"Hello {name}"}
- f"Hello {name}"是Python的f-string格式化字符串 语法:在字符串前加f,就可以把变量用{}包裹放在字符串里,Python会自动把变量的值填充到字符串中。
- 举个例子:name是张三时,最终字符串就是Hello 张三,返回的JSON就是{"message": "Hello 张三"}。
- 同样,FastAPI会自动把字典转为JSON格式返回给客户端。
三、难懂概念的大白话解释
这里把上面提到的专业术语,用零基础也能懂的方式再解释一遍:
|-----------------|------------------------------------------------------------------------------------------------------|
| 专业术语 | 大白话解释 |
| FastAPI | 别人写好的、专门用来做后端接口的Python工具包,不用你从零写网络连接、数据解析这些底层代码,几行就能写出一个高性能的接口服务,还自带可视化接口文档 |
| 装饰器(@app.get) | 给函数贴的「功能标签」,贴上去就给函数加了额外能力。这里的标签作用就是"把这个函数和对应的URL、请求方式绑定",用户访问对应地址,就自动执行这个函数 |
| HTTP GET请求 | 浏览器和后端服务器对话的一套通用规则里,最常用的「说话方式」,专门用来「获取数据」。你在浏览器输入网址回车,默认发的就是GET请求,就是告诉服务器"把这个地址的内容给我" |
| 异步函数(async def) | 普通函数是同步的,就像排队买奶茶,前面的人没做完,你只能死等;异步函数就像扫码下单后,你可以去干别的事,奶茶做好了再叫你拿。后端用异步,就能同时处理更多人的请求,不会被一个慢请求卡住 |
| 路径参数({name}) | URL地址里的「可变插槽」,你在这个位置填不同的内容,后端就能拿到这个内容,返回对应的结果。不用为每个不同的参数值,单独写一个接口 |
| 类型注解(name: str) | 给参数贴的「类型标签」,告诉FastAPI这个参数必须是什么类型的数据。FastAPI会自动帮你检查类型对不对,不对就直接返回错误,不用你自己写代码判断 |
| f-string格式化字符串 | Python里最方便的「拼接文字和变量」的写法,不用你用+号一点点拼字符串,加个f,把变量用{}包起来,Python会自动把变量的值填到文字里 |
| JSON格式 | 前后端交互的通用"普通话",不管前端是网页、APP还是小程序,后端是Python、Java还是别的语言,都能看懂JSON格式的数据。FastAPI会自动帮你把Python字典转成JSON,不用手动处理 |
四、补充:这段代码的运行方式
1.先安装依赖:打开终端执行pip install fastapi uvicorn(uvicorn是运行FastAPI服务的服务器)
2.把代码保存为main.py文件
3.终端执行启动命令:uvicorn main:app --reload
4.打开浏览器访问:
- 自带的可视化接口文档:http://127.0.0.1:8000/docs(可以直接在页面上测试接口)
纸质版学习笔记:

