失踪人口回归!后续会更新一些学习FastAPI的学习笔记,学习课程源于黑马程序员

一、代码整体说明

基于Python的FastAPI框架编写的极简后端API服务,仅用十几行代码就实现了2个可对外访问的HTTP接口,支持通过浏览器/接口工具发起请求并获取JSON格式的返回结果,是FastAPI最入门的标准示例。

二、逐行详细代码解释

1. 导入核心类

from fastapi import FastAPI

 

  • 作用:从fastapi这个第三方Python库中,导入它的核心类FastAPI
  • 通俗理解:相当于把别人写好的、用来快速搭建后端接口的“工具包”里最核心的“主工具”拿过来,后续所有功能都要基于它实现。

2. 注释与创建应用实例

Python
# 创建 FastAPI 实例
app = FastAPI()

 

  • 第一行# 开头的是注释:Python运行时会完全忽略注释,仅给开发者看的说明文字,不影响代码执行。
  • 第二行app = FastAPI():调用FastAPI类的构造方法,创建一个FastAPI应用实例,赋值给变量app
  • 这个app是整个后端服务的核心对象,后续所有接口的定义、服务的配置、启动都要围绕它来完成。

3. 第一个接口:根路径接口

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. 第二个接口:带路径参数的打招呼接口

@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 uvicornuvicorn是运行FastAPI服务的服务器)

2.把代码保存为main.py文件

3.终端执行启动命令:uvicorn main:app --reload

4.打开浏览器访问:

  • 根接口:http://127.0.0.1:8000
  • 打招呼接口:http://127.0.0.1:8000/hello/你的名字
  • 自带的可视化接口文档:http://127.0.0.1:8000/docs(可以直接在页面上测试接口)

纸质版学习笔记:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐