系列文章:

  FastAPI 学习之路(一)fastapi--高性能web开发框架

  FastAPI 学习之路(二)

  FastAPI 学习之路(三)

  FastAPI 学习之路(四)

  FastAPI 学习之路(五)

本次分享的是分享的是查询参数,字符串的校验。

我们看一个demo。

from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
def update_items(m: Optional[str] = None):
results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]}
if m:
results.update({"shanghai": m})
return results

    我们不去传递参数的时候请求下,

当我们传递了m的时候,我们看下结果。

我们看了下,结果是是更新了。

增加校验 ,我们打算添加约束条件:即使 m 是可选的,但只要提供了该参数,则该参数值不能超过2的长度。

      我们看下如何实现

from typing import Optional
from fastapi import FastAPI,Query
app = FastAPI()
@app.get("/items/")
def update_items(m: Optional[str] = Query(None, max_length=2)):
results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]}
if m:
results.update({"shanghai": m})
return results

我们传递下看看是否满足,我们传递一个超过2个字符串的。结果返回如下。

这是超过了长度,当我们不超过长度的时候呢,就可以正常更新。

如果我们要求最长的不能超过10个字符,最短不能低于5个字符串怎么实现呢。

from typing import Optional

from fastapi import FastAPI,Query

app = FastAPI()
@app.get("/items/")
async def update_items(m: Optional[str] = Query(None, max_length=10,min_length=5)):
results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]}
if m:
results.update({"shanghai": m})
return results

我们看下传递低于5个。

长度大于10个,接口已经给我们返回的错误的原因。

合适的长度,我们看下接口的请求

我们还有这样的一个需求,我们需要匹配参数,参数开头包含name的。如何实现。

from typing import Optional
from fastapi import FastAPI,Query
app = FastAPI()
@app.get("/items/")
async def update_items(m: Optional[str] = Query(None, regex='^name',max_length=10,min_length=5)):
results = {"items": [{"oneid": "shanghai"}, {"two": "beijing"}]}
if m:
results.update({"shanghai": m})
return results

我们请求下,看下是否满足,当我们请求不满足需求的时候,

那我们看下,满足需求的请求,如何返回。

我们看到了,接口可以正常返回。

文章首发在公众号,欢迎关注。

FastAPI 学习之路(六)查询参数,字符串的校验的更多相关文章

  1. FastAPI 学习之路(七)字符串的校验

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  2. Object-c学习之路六(oc字符串文件读写)

    // // main.m // NSString // // Created by WildCat on 13-7-25. // Copyright (c) 2013年 wildcat. All ri ...

  3. FastAPI 学习之路(二十七)安全校验

    你写API接口肯定你是希望是有权限的人才能访问,没有权限的人是不能访问的,那么我们应该如何去处理呢,我们可以用的验证方式有很多,我们这次分享的是用:OAuth2来认证.那么我们看下,需要怎么才能实现呢 ...

  4. FastAPI 学习之路(八)路径参数和数值的校验

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  5. FastAPI 学习之路(九)请求体有多个参数如何处理?

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  6. FastAPI 学习之路(十三)Cookie 参数,Header参数

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  7. FastAPI 学习之路(十六)Form表单

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  8. FastAPI 学习之路(十二)接口几个额外信息和额外数据类型

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  9. FastAPI 学习之路(十)请求体的字段

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  10. FastAPI 学习之路(十一)请求体 - 嵌套模型

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

随机推荐

  1. ASP.NET真分页_接前篇引用AspNetPager.dll进行数据分页

    一.前端准备工作 1.之前我写到过<Asp.net中引用AspNetPager.dll进行数据分页>  这种分页方式只能在前台将数据分页,而每次点击查询时对目标数据库还是全查询,这样不仅会 ...

  2. MySQL主从不同步、数据不一致解决办法

    第一种:通过sql_slave_skip_counter跳过同步错误,适用于一般异常如插入时主键冲突 这种情况一般是在从库进行了写操作,错误提示 Last_SQL_Errno: 1062 Last_S ...

  3. Mybatis笔记(2)

    一.Mybatis的Dao层实现 1.1 代理开发方式介绍 Mapper 接口开发需要遵循以下规范: 1. Mapper.xml文件中的namespace与mapper接口的全限定名相同 2. Map ...

  4. noip模拟44

    A. Emotional Flutter 直接将所有黑块平移到 \([1-k,0]\) 的区间即可,然后找有没有没被覆盖过的整点 注意特判 \(1-k\) 以及 \(0\) 的可行性,考场这里写挂成 ...

  5. Docker(34)- 如何修改 docker 容器的目录映射

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run ...

  6. Linux网络编程:原始套接字简介

    Linux网络编程:原始套接字编程 一.原始套接字用途 通常情况下程序员接所接触到的套接字(Socket)为两类: 流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的T ...

  7. openswan协商流程之(二):main_inI1_outR1()

    主模式第二包:main_inI1_outR1() 文章目录 主模式第二包:main_inI1_outR1() 1. 序言 2. `main_inI1_outR1()`处理流程图 3. `main_in ...

  8. dubbo 2.7应用级服务发现踩坑小记

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 背景 本文记录最近一位读者反馈的dubbo 2.7.x中应用级服务发现的问题,关于dubbo应 ...

  9. @RequestParam、@RequestBody、@PathVariable区别和案例分析

    一.前言 @RequestParam.@RequestBody.@PathVariable都是用于在Controller层接收前端传递的数据,他们之间的使用场景不太一样,今天来介绍一下!! 二.实体类 ...

  10. Learning How to Learn 学习如何学习

    Introduction 这是 UCSD 开设在 Coursera 上的课程 Learning How to Learn 的课程笔记.这门课程主要基于神经科学和认知心理学的一些研究成果讲述高效学习的理 ...