学习笔记1:Python FastAPI极简后端API示例解析

失踪人口回归!后续会更新一些学习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请求)。
  • 整体作用:给下面的函数贴一个"标签",告诉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的参数,传递给下面的函数。

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.打开浏览器访问:

纸质版学习笔记:

相关推荐
m0_678485452 小时前
jsoup如何读取html
jvm·数据库·python
迷藏4942 小时前
# 发散创新:基于Python的自动特征工程实战与深度优化在机器学习
java·开发语言·python·机器学习
2301_775148152 小时前
PHP与Suno音乐生成AI集成开发音频应用【操作】
jvm·数据库·python
2401_897190552 小时前
SQL数据更新时如何减少锁表时间_合理控制事务边界与并发
jvm·数据库·python
艾莉丝努力练剑2 小时前
【Linux线程】Linux系统多线程(八):<策略模式>日志系统的封装实现
linux·运维·服务器·c++·学习·策略模式
HalvmånEver2 小时前
MySQL数据库操作
linux·数据库·学习·mysql
2301_782659182 小时前
如何处理SQL大型数据表JOIN超时_分批查询与临时表存储方案
jvm·数据库·python
InfinteJustice2 小时前
C# 文件上传的服务器端加密 C#如何在存储到S3或Azure Blob时启用加密
jvm·数据库·python
羊群智妍2 小时前
2026年GEO监测工具大全|免费AI搜索优化直接用
笔记