首页
学习
活动
专区
圈层
工具
发布

FastAPI学习-2.路径参数

{id} 删除单个 book 接口: delete /api/v1/book/{id} 这里路径里面的 {id} 就是路径参数 路径参数 你可以使用与 Python 格式化字符串相同的语法来声明路径”...参数”或”变量”: from fastapi import FastAPI app = FastAPI()@app.get("/items/{item_id}")async def read_item...如果你提供的是 float 而非整数也会出现同样的错误,比如:http://127.0.0.1:8000/items/4.2 小笔记: 所以,通过同样的 Python 类型声明,FastAPI 提供了数据校验功能...预设值 如果你有一个接收路径参数的路径操作,但你希望预先设定可能的有效参数值,则可以使用标准的 Python Enum 枚举类型 创建一个 Enum 枚举类,导入 Enum 并创建一个继承自 str 和...然后创建具有固定值的类属性,这些固定值将是可用的有效值: from enum import Enumfrom fastapi import FastAPIclass ModelName(str, Enum

57210

关于 FastAPI 路径参数,你知道多少?

并且提供了灵活的路由匹配和处理,还支持类型转换和验证,使你能够 构建强大和可靠的 API 2.2 路径参数的基本使用 2.2.1 无类型的路径参数 from fastapi import FastAPI...2.3路径参数高级用法 2.3.1 Pydantic 模型(请求体)作为路径参数 在 FastAPI 中,使用 Pydantic 模型作为路径参数的优势主要体现在以下几个方面: 类型转换和验证:通过使用...这可以防止无效的参数值传递到请求处理函数中,提高了数据的有效性和安全性。...这样,如果需要更改参数的类型或验证规则,你只需要修改模型的定义,而不必在多个地方修改代码。 更清晰的代码结构:通过使用 Pydantic 模型作为路径参数,可以使代码结构更清晰和可读。...FastAPI 会自动将路径参数中的 user_id 值转换为整数,并将其传递给 put_item 函数的 user_id 参数。

45010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FastAPI学习-5.Path路径参数和数值校验

    前言 可以使用 Path 为路径参数声明相同类型的校验和元数据,与使用 Query 为查询参数声明更多的校验和元数据的方式差不多。...所以,你应该在声明时使用 … 将其标记为必需参数。 然而,即使你使用 None 声明路径参数或设置一个其他默认值也不会有任何影响,它依然会是必需参数。...按需对参数排序 设你想要声明一个必需的 str 类型查询参数 q。而且你不需要为该参数声明任何其他内容,所以实际上你并不需要使用 Query。...像下面这样,添加 ge=1 后,item_id 将必须是一个大于(greater than)或等于(equal)1 的整数。...因此,0.5 将是有效值。但是 0.0或 0 不是。对于 lt 也是一样的。

    75030

    FastAPI后台开发基础(3):查询参数

    什么是查询参数 查询参数的特点 位置: 查询参数位于 URL 的查询字符串部分,通常以 ? 开始,多个参数用 & 分隔。例如:/items?...如果客户端未提供某个查询参数,FastAPI 会将其视为 None,并可以在处理请求时进行相应的逻辑处理 类型: FastAPI 支持多种数据类型的查询参数,包括字符串、整数、布尔值等。...你可以通过类型注解来指定查询参数的类型,FastAPI 会自动进行验证和转换 默认值: 可以为查询参数设置默认值。...a=world 返回错误,提示 a 参数应为有效整数 描述: 该路由展示了如何使用基本的查询参数,支持默认值和类型验证。...: item_id: 路径参数,必需 offset: 整数类型,可选,默认值为 0 limit: 整数类型,可选,默认值为 10 示例请求: GET /query_3/my_item?

    61732

    FastAPI学习-2.url 上的路径参数

    /{id} 删除单个 book 接口: delete /api/v1/book/{id} 这里路径里面的 {id} 就是路径参数 简单示例 可以使用与 Python 格式化字符串相同的语法来声明路径”参数...”或”变量 from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(...如果我们想让路径参数 item_id 只能传 数字类型,于是可以使用标准的 Python 类型标注为函数中的路径参数声明类型。...如果你提供的是 float 而非整数也会出现同样的错误,比如:http://127.0.0.1:8000/items/4.2 所以,通过同样的 Python 类型声明,FastAPI 提供了数据校验功能...docs文档 打开浏览器访问 http://127.0.0.1:8000/docs,你将看到自动生成的交互式 API 文档: 顺序很重要 在创建路径操作时,你会发现有些情况下路径是固定的。

    1.5K10

    FastAPI 构建 API 高性能的 web 框架(二)

    q,可以是字符型也可以None不填,Query用来更多的补充信息,比如这个参数,默认值是None,最大长度50 1.2 多个参数 from typing import Annotated from fastapi...,通过Annotated需要两次验证,验证一,是否是整数型,验证二,数值大小 大于等于0,小于等于1000 q: str | None = None, item: Item | None...在 OpenAPI 的路径操作中为响应添加一个 JSON Schema。 并在自动生成文档系统中使用。...创建一个允许的源列表(由字符串组成)。 将其作为「中间件」添加到你的 FastAPI 应用中。...1.7 与SQL 通信 https://fastapi.tiangolo.com/zh/tutorial/sql-databases/ FastAPI可与任何数据库在任何样式的库中一起与 数据库进行通信

    76930

    FastAPI学习-4.query 查询参数

    声明不属于路径参数的其他函数参数时,它们将被自动解释为”查询字符串”参数 查询字符串是键值对的集合,这些键值对位于 URL 的 ? 之后,并以 & 符号分隔。...: (很明显的)编辑器支持 数据”解析” 数据校验 自动生成文档 默认值 由于查询参数不是路径的固定部分,因此它们可以是可选的,并且可以有默认值。...但当你想让一个查询参数成为必需的,不声明任何默认值就可以: from fastapi import FastAPI app = FastAPI()@app.get("/items/{item_id}"...short=yes 或任何其他的变体形式(大写,首字母大写等等),你的函数接收的 short 参数都会是布尔值 True。对于值为 False 的情况也是一样的。...多个路径和查询参数 你可以同时声明多个路径参数和查询参数,FastAPI 能够识别它们。 而且你不需要以任何特定的顺序来声明。

    77810

    FastAPI学习-3.get 请求 query params 查询参数

    前言 get 请求的参数在url 后面带着,一般叫query params 查询参数 查询参数 声明不属于路径参数的其他函数参数时,它们将被自动解释为”查询字符串”参数 from fastapi import...应用于路径参数的所有相同过程也适用于查询参数: (很明显的)编辑器支持 数据”解析” 数据校验 自动生成文档 默认值 由于查询参数不是路径的固定部分,因此它们可以是可选的,并且可以有默认值。...short=1 或者 short=True, short=true, short=on, short=yes 或任何其他的变体形式(大写,首字母大写等等),你的函数接收的 short 参数都会是布尔值...对于值为 False 的情况也是一样的。 多个路径和查询参数 你可以同时声明多个路径参数和查询参数,FastAPI 能够识别它们。 而且你不需要以任何特定的顺序来声明。...但当你想让一个查询参数成为必需的,不声明任何默认值就可以: from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id

    3.6K10

    FastAPI学习-4.get 请求 query params 参数校验

    前言 get请求在接收参数的时候,需校验用户传过来的参数是否合法 查询参数和字符串校验 FastAPI 允许你为参数声明额外的信息和校验。...在本例中,适用于字符串的 max_length 参数: q: str = Query(None, max_length=50) 将会校验数据,在数据无效时展示清晰的错误信息,并在 OpenAPI 模式的路径操作中记录该参数...q=foo&q=bar 你会在路径操作函数的函数参数 q 中以一个 Python list 的形式接收到查询参数 q 的多个值(foo 和 bar)。...例如,List[int] 将检查(并记录到文档)列表的内容必须是整数。但是单独的 list 不会。 声明更多元数据 你可以添加更多有关该参数的信息。...item-query=foobaritems 但是 item-query 不是一个有效的 Python 变量名称。 最接近的有效名称是 item_query。

    1.7K20

    FastAPI从入门到实战(0)——初识FastAPI

    FastAPI特性 基于开放标准 用于创建 API 的 OpenAPI 包含了路径操作,请求参数,请求体,安全性等的声明。...另外的 API 文档:ReDoc 简洁 任何类型都有合理的默认值,任何和地方都有可选配置。所有的参数被微调,来满足你的需求,定义成你需要的 API。 但是默认情况下,一切都能“顺利工作”。...验证 校验大部分(甚至所有?)的 Python 数据类型,包括: JSON 对象 (dict). JSON 数组 (list) 定义成员类型。 字符串 (str) 字段, 定义最小或最大长度。...所有的依赖关系都可以从请求中获取数据,并且增加了路径操作约束和自动文档生成。 即使在依赖项中被定义的路径操作 也会自动验证。 支持复杂的用户身份认证系统,数据库连接等等。 不依赖数据库,前端等。...无限制"插件" 或者说,导入并使用你需要的代码,而不需要它们。 任何集成都被设计得被易于使用(用依赖关系),你可以用和路径操作相同的结构和语法,在两行代码中为你的应用创建一个“插件”。

    4.4K20

    Github 火热的 FastAPI 库,站在了这些知名库的肩膀上

    将 Python 中的datetime 对象转为字符串,等等。 另外一个功能就是数据的验证,确保传入的参数是有效的,例如,有些字段是一个 int,类型而不是字符串,这在检测输入数据是非常有用的。...如果我们修改参数或 Marshmallow 的 schema,却忘了还修改 YAML 文档字符串,生成的模式将被废弃。 APISpec 和 Marshmallow 的作者是同一个开发者。...Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自动数据验证,序列化或API 文档。...这可以大大提高互操作性,因为您可以将 Uvicorn 切换到任何其他 ASGI 服务器(例如 Daphne 或 Hypercorn),也可以添加与ASGI兼容的工具,例如 python-socketio...因此,使用 Starlette 可以执行的任何操作,都可以直接使用 FastAPI 进行。

    6.3K30

    FastAPI后台开发基础(7):常见字段类型

    中,使用 Pydantic 模型来定义和验证数据是一种常见的做法。...以下是对这个模型中每个字段的描述,特别强调了那些非通用或特殊的数据类型:name: 字符串类型 (str),通过随机选择 'Alice', 'Bob', 'Charil' 中的一个来赋值。...age: 整数类型 (int),其值是 18 到 80 之间的随机整数。price: 浮点数类型 (float),通过随机生成的方式计算得到,展示了如何使用随机数来生成浮点数。...email: 特殊类型 EmailStr,同样是 Pydantic 提供的类型,用于验证字符串是否为有效的电子邮件地址。默认值设置为 'test@example.com'。...这个模型不仅展示了如何在 FastAPI 中使用各种常见和特殊的数据类型,还通过默认值的设置展示了如何利用 Python 的标准库和 Pydantic 的功能来生成和验证复杂的数据结构。

    44843

    FastAPI--路由(2)

    然后就是和bottle(微型Web框架)一样也可以对传入的参数进行数据验证的定义: 如: import uvicorn from fastapi import FastAPI app = FastAPI...路径参数和查询参数的必选和可选 参数的可选和必选主要是通过是否给默认值来决定的,如: import uvicorn from fastapi import FastAPI app = FastAPI(...查询参数Query参数的其他校验 在以前通常是使用wtform来定义提交的字段信息的类似或可选或长度类型。...路径参数的其他校验方式 对于查询参数可以通过Query,同样对于路径参数也可以使用Fastapi自带的Path来进行校验。...对于路径参数校验中,还可以对item_id进行大于或等于的校验如: import uvicorn from fastapi import FastAPI, Path app = FastAPI()

    2.5K20

    FastAPI框架诞生的缘由(下)

    如果我们修改参数或 Marshmallow 的 schema,却忘了还修改 YAML 文档字符串,生成的模式将被废弃。 APISpec 和 Marshmallow 的作者是同一个开发者。...Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自动数据验证,序列化或API 文档。...这可以大大提高互操作性,因为您可以将 Uvicorn 切换到任何其他 ASGI 服务器(例如 Daphne 或 Hypercorn),也可以添加与ASGI兼容的工具,例如 python-socketio...因此,使用 Starlette 可以执行的任何操作,都可以直接使用 FastAPI 进行。...那是像 Starlette(或FastAPI)这样的框架可以提供的。它是 Starlette 和 FastAPI 的推荐服务器。 FastAPI推荐它为主 Web服务器运行 FastAPI 应用程序。

    3K20

    FastAPI从入门到实战(4)——路径参数与数值校验

    简单记录路径参数的类型,错误检查,自动填充,数据转换、解析、验证(包括数字大小范围的验证),参数别名,API 交互文档中传参演示等内容 一个伪静态请求 @app01.get("/stu01/parameters...是固定的。...声明路径参数 @app01.get("/stu01/{str}") def path_param02(str): return {"message":str} 利用{}来声明路径参数或变量,上面的...路径参数获取 首先从fastapi 导入 Path包,再根据需求声明约束: from fastapi import Path # 长度和正则表达式的验证 @app01.get("/stu01_num/...将其标记为必需参数。即使使用 None 声明路径参数或设置一个其他默认值也不会有任何影响,它依然会是必需参数。

    1K10

    全面拥抱FastApi —三大参数及验证

    前面说过 FastApi 的一大特点是基于标准的 Python 3.6类型声明,兼具参数校验功能,这一切都要归功于 Pydantic 路径参数 路径参数即 url 路径参数,可以使用 Python 格式字符串相同语法声明路径...“参数”或“变量”,例如: from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item...item_id 的值是 "test" 不能转为 int,这就是参加验证 查询参数 查询参数也是带在 url 地址中的,是 url 中位于 ?...其中还有一个是路径参数:item_id, str 类型 请求体参数 要发送请求正文,必须使用一个:POST, PUT,DELETE或PATCH,需导入 Pydantic 的 BaseModel from...同时,FastApi 可以自动帮我们识别请求 body 参数, 路径参数以及查询参数,并准确的获取参数数据。

    5.9K30

    FastAPI教程查询参数

    声明不属于路径参数的其他函数参数时,它们将被自动解释为"查询字符串"参数 from fastapi import FastAPI app = FastAPI() fake_items_db = [{"...async def read_item(skip: int = 0, limit: int = 10): return fake_items_db[skip : skip + limit] 查询字符串是键值对的集合...skip=0&limit=10 ...查询参数为: skip:对应的值为 0 limit:对应的值为 10 由于它们是 URL 的一部分,因此它们的"原始值"是字符串。...应用于路径参数的所有相同过程也适用于查询参数: (很明显的)编辑器支持 数据"解析" 数据校验 自动生成文档 默认值 由于查询参数不是路径的固定部分,因此它们可以是可选的,并且可以有默认值。...还要注意的是,FastAPI 足够聪明,能够分辨出参数 item_id 是路径参数而 q 不是,因此 q 是一个查询参数。

    90320
    领券