fastApi笔记04-查询参数和字符串校验

这篇具有很好参考价值的文章主要介绍了fastApi笔记04-查询参数和字符串校验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

额外校验

使用Query可以对查询参数添加校验

from typing import Union

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(q: Union[str, None] = Query(default=None, max_length=50)):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

default:默认值

max_length:最大长度

min_length:最小长度

pattern:正则表达式

声明为必须参数

当使用Query声明一个查询参数为必须参数时,只用不声明默认值就行,也就是default不传

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(q: str = Query(min_length=3)):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

使用省略号(...)声明必填参数

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(q: str = Query(default=..., min_length=3)):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

使用Pydantic中的Required代替省略号

from fastapi import FastAPI, Query
from pydantic import Required

app = FastAPI()


@app.get("/items/")
async def read_items(q: str = Query(default=Required, min_length=3)):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

使用None声明必须参数

from typing import Union

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(q: Union[str, None] = Query(default=..., min_length=3)):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

声明None是个有效类型,这样将强制客户端传一个值。即使这个值是None

查询参数列表,多个值

使用Query显式地定义查询参数时,还可以声明它去接收一组值,或换句话来说,接收多个值。

例如,要声明一个可在 URL 中出现多次的查询参数

from typing import List, Union

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(q: Union[List[str], None] = Query(default=None)):
    query_items = {"q": q}
    return query_items

http://localhost:8000/items/?q=foo&q=bar

fastApi笔记04-查询参数和字符串校验,fastApi,fastapi,python

要声明类型为List的查询参数,需要显示使用Query,否则该参数将被当做请求体解析

具有默认值的查询参数列表/多个值

from typing import List

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(q: List[str] = Query(default=["foo", "bar"])):
    query_items = {"q": q}
    return query_items

http://localhost:8000/items/

fastApi笔记04-查询参数和字符串校验,fastApi,fastapi,python文章来源地址https://www.toymoban.com/news/detail-833937.html

更多元数据

from typing import Union

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(
    q: Union[str, None] = Query(
        default=None,
        alias="item-query",
        title="Query string143242542",
        description="Query string for the items to search in the database that have a good match",
        min_length=3,
        max_length=50,
        pattern="^fixedquery$",
        deprecated=True,
    ),
):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results
  • alias:参数别名
  • title:不知道啥效果,没试出来
  • description:自动文档上的参数描述
  • deprecated:True时自动文档提示弃用参数

到了这里,关于fastApi笔记04-查询参数和字符串校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 字符串查询--Python

    str1 = \\\'hello python\\\'  index 需求:查找p所在的索引位置  格式: 字符串.index(self(不用传值), sub(子字符串), start(起始位置), end(结束位置)) print(str1.index(\\\'p\\\'))  # 6 如果字符串中含有多个子字符串,则会返回指定范围内的从左至右的第一个查找到的子字符串位置索引 print(str1.index(\\\'o\\\'))  #

    2024年02月09日
    浏览(32)
  • Elasticsearch-单字符串多字段查询

    单字符串查询实例  bool查询should的算分过程 Disjunction Max Query查询 通过Tie Breaker参数调整 MultiMatch Query查询 三种场景  MultiMatch Query语法  使用多数字段匹配解决 跨字段搜索(一个地址信息映射到不同的字段上:街道,城市,国家......) PUT /blogs/_bulk {\\\"index\\\":{\\\"_id\\\":1}} {\\\"title\\\":\\\"Qucik brown

    2024年02月06日
    浏览(32)
  • Sql 函数传递参数 字符串拼接

    使用场景 一个计算价格的函数,多个存储过程调用,因业务需求经常要新增参数,避免修改函数时程序执行存储过程报错,将多个参数拼接为一个字符串传递

    2024年02月10日
    浏览(38)
  • MySQL中字符串查询效率大比拼

    最近有个同事对字符串加索引,加完后,发现多了个奇奇怪怪的数字 执行的SQL如下: 这个奇怪数字就是191,它很是疑惑,也没指定索引的长度 通过查看MySQL官方文档 InnoDB has a maximum index length of 767 bytes for tables that use COMPACT or REDUNDANT row format, so for utf8mb3 or utf8mb4 columns, you ca

    2024年02月07日
    浏览(75)
  • Mysql 查询以逗号(,)分割的字符串,精确查找和模糊查询

    1、测试数据库表结构 2、测试数据 数据库有一个字段ancestors存储着部门父级id,每,用逗号分隔符隔开。比如:ancestors:“0,1,2,3,4,5,6,7,8,11,12,9,10,13\\\"”,我需要查询ancestors字段中包含“2”的信息 结果: 结果: 使用 FIND_IN_SET 函数能够准确查出 ancestors字段中含有 2 这项有哪些

    2024年02月11日
    浏览(32)
  • Mysql中查询以什么字符串开头的数据

    在开发过程中,有时候需要查询出以某个字符串开头的所有数据。下面来给大家介绍介绍: 知识点: 以某个字符串开头或不以某个字符串开头 方式1用like 这里查询以1101开头 这里查询不以1101开头 方式2用left 这里查询以1101开头 4为字符串长度(‘1101‘的长度) 这里查询不以

    2024年02月08日
    浏览(34)
  • 联表查询的时候外键id是字符串

    2024年02月09日
    浏览(26)
  • 【vue】post请求的参数格式转换为字符串拼接

    我在提交表单的时候,发现一直报500这个错,说是超时,但是我反复查看,并没有什么问题。后来我请求大佬说是请求接口的参数的问题,使用对象JSON的形式就是获取不到,必须是字符串拼接的格式才可以(默默地说,post默认参数是对象JSON格式传递,传字符串拼接的格式是

    2024年02月12日
    浏览(40)
  • mysql判断查询条件是否包含某字符串的7种方式

    like 也就是模糊查询 如:select * from user where user_name \\\'%李%\\\' locate 判断是否包含某字符串 如:select * from user where locate(\\\'李\\\',user_name)0 position 判断是否包含某字符串 如:select * from user where position(\\\'李\\\' in user_name)0 instr 判断是否包含某字符串 如:select * from user where instr(user_name,\\\'李\\\'

    2024年02月16日
    浏览(56)
  • MYSQL数据库连接字符串(connectionString)配置参数大全详解

    请参考原文:MYSQL数据库连接字符串(connectionString)配置参数大全详解

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包