7 理解FastAPI的核心概念之请求与响应
在深入 FastAPI 之前,理解其核心概念是十分重要的。本篇文章将重点介绍请求与响应的内容,这是 web 应用程序通信的基础。前两篇内容中,我们安装并配置了 Uvicorn
,以及在后续篇章中将讨论 ASGI
与 WSGI
的关系。现在,我们将专注于请求与响应的细节。
FastAPI中的请求
在 FastAPI 中,用户的请求通常包含以下几个部分:
- 请求方法:指定如何与资源交互,常见请求方法有
GET
、POST
、PUT
、DELETE
等。 - 请求路径:请求的 URL。
- 请求体:
POST
或PUT
请求通常包含请求体,其中可以携带数据。 - 请求头:元信息,例如内容类型 (
Content-Type
)、授权信息等。
示例:处理 GET 请求
首先,让我们看一个简单的案例,演示如何处理 GET
请求。
1 | from fastapi import FastAPI |
在这个示例中,当用户发送一个 GET
请求到路径 /items/123?q=test
时,item_id
将被提取为 123
,同时查询参数 q
的值为 test
。FastAPI 通过路径参数和查询参数自动解析请求。
FastAPI中的响应
请求处理完后,FastAPI 会返回响应。响应一般包含状态码、响应体、响应头等信息。
常用的响应类型
- JSON响应:默认的返回形式
- HTML响应:返回HTML内容
- 文件响应:返回文件下载
示例:返回JSON响应
继续我们的示例,快速看看如何返回一个 JSON 响应:
1 | from fastapi import FastAPI |
当此请求成功时,响应的内容将是 JSON 格式,API 用户将收到如下响应:
1 | { |
返回不同类型的响应
我们也可以返回不同类型的响应,例如返回 HTML 内容:
1 | from fastapi import FastAPI |
访问 /html
路径时,将会得到一个简单的 HTML 页面。
自定义响应
我们可以使用 JSONResponse
类来自定义响应,来设置状态码或特殊的响应数据格式:
1 | from fastapi import FastAPI |
这里我们使用 JSONResponse
结合自定义内容,并返回了状态码为 200
的响应。
请求与响应的示例整合
以下是一个更复杂的例子,它展示了如何同时处理请求和生成响应。我们通过 POST
请求添加新项目,并用 GET
请求获取项目列表:
1 | from fastapi import FastAPI, HTTPException |
在此案例中,我们使用 POST
请求将项目添加到 items
列表,并用 GET
请求获取所有项目的列表。
总结
掌握请求与响应的流程是使用 FastAPI 开发网络应用的重要一步。在本篇文章中,我们探讨了如何接收请求、处理参数、以及如何返回响应。理解和熟练使用这些基本概念将为你后续学习 ASGI
和 WSGI
奠定良好的基础。
希望这一篇关于请求与响应的讨论能够帮助你更好地理解 FastAPI,并在开发中应用这些关键概念!接下来,我们将讨论更深层次的内容:ASGI
与 WSGI
的区别及各自的应用场景。
7 理解FastAPI的核心概念之请求与响应