FastAPI 教程
FastAPI教程 请求文件
File 用于定义客户端的上传文件。 说明 因为上传文件以「表单数据」形式发送。 所以接收上传文件,要预先安装 python-multipart。 例如:&nb…
FastAPI教程 请求表单与文件
FastAPI 支持同时使用 File 和 Form 定义文件和表单字段。 说明 接收上传文件或表单数据,要预先安装 python…
FastAPI教程 错误处理
某些情况下,需要向客户端返回错误提示。 这里所谓的客户端包括前端浏览器、其他应用程序、物联网设备等。 需要向客户端返回错误提示的场景主要如下: 客户端没有执行操作的权限 客户端没有…
FastAPI教程 路径操作配置
您可以将几个参数传递给路径操作装饰器来配置它。 警告 请注意,这些参数直接传递给路径操作装饰器,而不是您的路径操作函数。 响应状态码 您可以定义status_code要在您的路径操…
FastAPI教程 JSON兼容编码器
在某些情况下,您可能需要转换数据类型(如Pydantic模型),将其转换为与JSON兼容的数据结构(如dict,list等)。 例如,如果您需要将其存储在数据库中。 为此,Fast…
FastAPI教程 请求体 – 更新数据
用 PUT 更新数据 更新数据请用 HTTP PUT 操作。 把输入数据转换为以 JSON 格式存储的数据(比如,使用 NoSQL…
FastAPI教程 依赖项 – 第一步
FastAPI 提供了简单易用,但功能强大的依赖注入系统。 这个依赖系统设计的简单易用,可以让开发人员轻松地把组件集成至 FastAPI。 什么是「依赖注入」 编程中的「…
FastAPI教程 作为依赖的类
在深入研究依赖注入系统之前,让我们升级前面的例子。 来自上一个示例的一个字典 在前面的示例中,我们dict从我们的依赖项(“可靠”)中返回 a : from typing…
FastAPI教程 子依赖项
FastAPI 支持创建含子依赖项的依赖项。 并且,可以按需声明任意深度的子依赖项嵌套层级。 FastAPI 负责处理解析不同深度的子依赖项。 第一层依赖项 下列代码创建…
FastAPI教程 路径操作装饰器依赖项
有时,我们并不需要在路径操作函数中使用依赖项的返回值。 或者说,有些依赖项不返回值。 但仍要执行或解析该依赖项。 对于这种情况,不必在声明路径操作函数的参数时使用 Dep…
FastAPI教程 全局依赖项
有时,我们要为整个应用添加依赖项。 通过与定义路径装饰器依赖项 类似的方式,可以把依赖项添加至整个 FastAPI 应用。 这样一来,就可以为所有路径…
FastAPI教程 与yield的依赖关系
FastAPI 支持在完成后执行一些额外步骤的依赖项。 为此,请使用yield代替return,并在之后编写额外的步骤。 提示 确保使用yield一次。 技术细节 任何可用于以下功…
FastAPI教程 安全性简介
有许多方法可以处理安全性、身份认证和授权等问题。 而且这通常是一个复杂而「困难」的话题。 在许多框架和系统中,仅处理安全性和身份认证就会花费大量的精力和代码(在许多情况下,可能占编…
FastAPI教程 安全性 – 第一步
假设您在某个域中拥有后端API。 并且您在另一个域或同一域的不同路径(或移动应用程序)中有一个前端。 并且您希望有一种方法让前端使用用户名和密码与后端进行身份验证。 我们可以使用O…
FastAPI教程 获取当前用户
在上一章节中,(基于依赖项注入系统的)安全系统向路径操作函数提供了一个 str 类型的 token: from fastapi import Depe…
FastAPI教程 使用密码和 Bearer 的简单 OAuth2
现在让我们接着上一章继续开发,并添加缺少的部分以实现一个完整的安全性流程。 获取 username 和 password 我们将使用 Fas…
FastAPI教程 使用(哈希)密码和 JWT Bearer 令牌的 OAuth2
既然我们已经有了所有的安全流程,就让我们来使用 JWT 令牌和安全哈希密码让应用程序真正地安全吧。 你可以在应用程序中真正地使用这些代码,在数据库中保存密码哈希…
FastAPI教程 中间件
你可以向 FastAPI 应用添加中间件. “中间件”是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作. 它…
FastAPI教程 CORS(跨域资源共享)
CORS 或者「跨域资源共享」 指浏览器中运行的前端拥有与后端通信的 JavaScript 代码,而后端处于与前端不同的「源」的情况。 源 源是协议(http,https…
FastAPI教程 SQL(关系)数据库
FastAPI不要求您使用 SQL(关系)数据库。 但是您可以使用任何您想要的关系数据库。 在这里,我们将看到一个使用SQLAlchemy的示例。 您可以轻松地将其调整为 SQLA…