前面讲述了FastApi的搭建与运行,这篇来讲下FastApi的路径参数与查询参数。

路径参数

可以使用与Python格式字符串相同的语法来声明路径参数

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id):return {"item_id": item_id}

上面代码,path参数item_id的值将作为参数传递给read_item函数

在浏览器中运行一下

可以看到,path为 /items/foo,其中的foo将作为实参传入read_item函数

是不是觉得很简单呢?

Query参数

声明不属于路径参数的其他功能参数时,它们将自动解释为Query参数

from fastapi import FastAPIapp = FastAPI()@app.get("/items")
async def read_item(uid):return {"uid": uid}

来看上面简单例子,这个例子中,没有路径参数,但却有其他的参数uid,这个uid就将解释为Query参数。

Query是在path后面加上?形参名=值,如果有多个查询参数以&字符分隔,比如path?参数名=值&参数名=值,其中的值将被作为实参传入函数。

在上例中转化的URL为:

http://127.0.0.1:8000/items?uid=1

在来看一个多个查询参数的例子

from fastapi import FastAPIapp = FastAPI()@app.get("/items")
async def read_item(uid, aid):return {"uid": uid, "aid": aid}

上例中转化的URL为:

http://127.0.0.1:8000/items?uid=1&aid=2

 参数类型

上面几个简单例子,细心一点就会发现,参数的类型可以随便定义,这样可能就会因为用户的随便传入值而报错,比如uid需要的是int类型,用户传了个str类型过来,这时怎么办呢?有没有简单的方式呢?

在FastApi中很方便的帮我们实现了这个功能。

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{uid}")
async def read_item(uid: int, name: str):return {"uid": uid, "name": name}

上面例子中,即含有路径参数也含有Query参数,且路径参数必须为int类型,name必须为str类型,用户必须传指定类型才可以访问成功。

http://127.0.0.1:8000/items/1?name=apple

上面URL访问成功,当用户传入别的类型时就会给出提示信息,比如访问下面连接

http://127.0.0.1:8000/items/hello?name=apple

上面连接的路径参数传了一个str类型,服务器就会给出提示

{
    "detail": [{
        "loc": ["path", "uid"],
        "msg": "value is not a valid integer",
        "type": "type_error.integer"
    }]
}

给出了具体信息,说uid参数的值不是int类型,是不是很方便。

FastApi路径参数Query参数及参数类型相关推荐

  1. JVM参数调优基础-参数的类型详解

    1 参数类型 1.1 标准参数 -help -server -client -version -showversion -cp -classpath 1.2 X 参数 非标准化参数 -Xint :解释 ...

  2. python函数用法详解2(变量的作用域(全局变量、局部变量)、共享全局变量、函数返回值、函数的参数(位置参数、关键字参数、默认参数、不定长参数)、拆包、交换变量值、引用、可变和不可变类型)

    1. 变量作⽤域         变量作⽤域指的是变量⽣效的范围,主要分为两类:局部变量和全局变量. 局部变量         定义在函数体内部的变量,即只在函数体内部⽣效. def testA(): ...

  3. 拷贝构造函数的第一个参数必须是自身类类型的引用

    拷贝构造函数的第一个参数必须是自身类类型的引用 拷贝构造函数的定义:如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数 第一个参数必须是自身类类型的引 ...

  4. 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )

    文章目录 I . 函数类型 II . 带参数名的参数列表 III . 可空函数类型 IV . 复杂函数类型解读 V . 函数类型别名 VI . 带 接收者类型 的函数类型 VII . 函数类型实例化 ...

  5. 验证 Boost.Optional 复制构造函数不会尝试调用从模板化参数初始化构造函数的元素类型

    验证 Boost.Optional 复制构造函数不会尝试调用从模板化参数初始化构造函数的元素类型 实现功能 C++实现代码 实现功能 验证 Boost.Optional 复制构造函数不会尝试调用从模板 ...

  6. JVM实用参数(一)JVM类型以及编译器模式

    原文地址:https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-1-jvm-types-and-compiler-modes/ 译者 ...

  7. Query类常用参数详解

    主要介绍一下Query类及其常用的参数. 参数介绍 Query里面大概分为四类参数: 分页参数:设置分页 排序参数:设置排序字段 条件参数:设置查询条件 字段参数:可返回指定字段 分页参数 Query ...

  8. python参数种类_python的参数类型

    Python中函数的参数有4种形式,分别是: 位置或关键字参数(Positional-or-keyword parameter) 仅位置的参数(Positional-only parameter) 任 ...

  9. R语言使用plot函数可视化数据、使用type参数自定义设置可视化的类型(数据点和线关系的类型)、设置type参数为s则为阶梯状显示

    R语言使用plot函数可视化数据.使用type参数自定义设置可视化的类型(数据点和线关系的类型).设置type参数为s则为阶梯状显示 目录

最新文章

  1. 疫情之下,村干部们的智慧越来越...
  2. 抛开设计模式,软件设计的微思考
  3. Erlang error?
  4. 蓝桥学院2019算法题1.3
  5. asp 转换html代码,asp下实现对HTML代码进行转换的函数
  6. 【干货特供】dotNet core 应用部署至 centos(超详解附截图)
  7. String Start!
  8. MATLAB中的微积分运算(数值符号)
  9. 原生JavaScript练习——全选
  10. Nodejs基础:路径处理模块path总结
  11. Windows Service开发点滴20130622
  12. 大一新生应该如何学习C语言,书上代码看不懂理解不了怎么办?
  13. 手游传奇架设教程_传奇手游战神引擎架设教程
  14. Linux下tftp服务器/客户端安装
  15. spring boot整合muybatis的错误
  16. html简单边框制作--特效文字制作及代码,HTML音画介绍之一--基本原理和边框的制作...
  17. 算法小记(1)--判断三个数的最大,最小
  18. 结合MongoDB开发LBS应用(mongodb geo)
  19. 【Java开发者专场】阿里专家梁笑:2018双十一下单成功率99.9%!供应链服务平台如何迎接大促... 1
  20. 蓝海卓越计费管理系统 debug.php_未授权RCE

热门文章

  1. 《Java Web开发实战经典》李兴华 王月清 第五章5.7.3 例5.26
  2. zookeeper安装步骤
  3. EXCEL 建立两个Y轴
  4. G003-185-10-图书销售系统项目需求提案计划书
  5. 视频教程-Word项目实战从入门到精通(兼容2007、2010、2013、2016)-Office/WPS
  6. java计算机毕业设计HTML5“忆红楼梦之味”网站设计与实现MyBatis+系统+LW文档+源码+调试部署(2)
  7. 西瓜书读书笔记整理(二)—— 第一章 绪论
  8. 期刊论文标脚注!!!
  9. Python实现抖音表白软件
  10. 五千年春江花月夜之撼世一纸诗谭