什么是查询参数?

http://127.0.0.1:8000/get?name=xxx&age=18

http://127.0.0.1:8000/get?age=18&name=xxx

在 url 的 ? 后面跟着的一组或多组键值对,就是查询参数

FastAPI 的查询参数

  • 当声明了不属于路径参数以外的其他函数参数时, FastAPI 会自动解析为查询参数
  • 和路径参数不同,查询参数可以是可选非必填的,也可以具有默认值

路径参数+请求参数的栗子

from fastapi import FastAPI
import uvicorn app = FastAPI() # 路径参数+请求参数
@app.get("/items/{item_id}")
async def read_item(item_id: str, name: str):
return {"item_id": item_id, "name": name} if __name__ == "__main__":
uvicorn.run(app="3_get_query:app", host="127.0.0.1", port=8080, reload=True, debug=True)

正确传参的请求结果

必传参数+可选参数的栗子

from typing import Optional

# 必传参数+可选参数
@app.get("/items")
async def read_item(item_id: str, name: Optional[str] = None):
return {"item_id": item_id, "name": name}

不传 name 的请求结果

name 没传所以取默认值 None

查询参数类型自动转换

# 查询参数类型转换
@app.get("/items/{item_id}")
async def read_item(item_id: str, q: Optional[str] = None, short: bool = False):
item = {"item_id": item_id}
if q:
item.update({"q": q})
if not short:
     # 如果 short == False,则加多一个键 description
item.update(
{"description": "This is an amazing item that has a long description"}
)
return item

short 是 True 的请求结果

short 是 False 的请求结果

指定枚举类型请求参数的栗子

from enum import Enum
from typing import Optional, List # 自定义枚举类
class ModelName(Enum):
boy = "男"
girl = "女"
unknown = "不知道" @app.get("/item_enum")
async def read_item(name: str,
sex: Optional[ModelName] = ModelName.unknown):
return {
"name": name,
"sex": sex
}

参数传枚举值的请求结果

不传 sex 的请求结果

不传 sex,会取 sex 的默认值:枚举类中的 unknown 的值

查询参数能用 List[str] 传参吗?

# List[str]
@app.get("/list")
async def read_item(address: List[str] = None):
return {"address": address}

postman 请求的结果

  • 即使参数值写成数组形式也不会传值成功,因为查询参数都是字符串
  • 所以 ["广州","深圳"] 其实是一个字符串 str,并不是 List[str],那要怎么才能传数组呢?

分开多次传 address 可以吗?

答案也是不行

那要怎么做呢?

用 Query 库! 下一篇会讲到!

https://www.cnblogs.com/poloyy/p/15306809.html

FastAPI(5)- get 请求 - 查询参数 Query Parameters的更多相关文章

  1. 查询参数: Query Parameters

    官方文档地址: https://fastapi.tiangolo.com/zh/tutorial/query-params/ # -*- coding: UTF-8 -*- from fastapi ...

  2. FastAPI(4)- get 请求 - 路径参数 Path Parameters

    什么是路径 假设一个 url 是: http://127.0.0.1:8080/items/abcd 那么路径 path 就是 /items/abcd 路径参数 就是将路径上的某一部分变成参数,可通过 ...

  3. Hibernate5.x版本HQL限定查询 Legacy-style query parameters (`?`) are no longer supported

    在此版本的限定查询和4.0版本的限定查询: 如果查询语句是: String hql = "select u from User u where u.gender = ?"; 会出现 ...

  4. FeignClient调用POST请求时查询参数被丢失的情况分析与处理

    前言 本文没有详细介绍 FeignClient 的知识点,网上有很多优秀的文章介绍了 FeignCient 的知识点,在这里本人就不重复了,只是专注在这个问题点上. 查询参数丢失场景 业务描述: 业务 ...

  5. FastAPI(6)- get 请求 - 详解 Query

    可选参数 上一篇文章讲过查询参数可以不是必传的,可以是可选参数 from fastapi import FastAPI from typing import Optional import uvico ...

  6. FastAPI 学习之路(六)查询参数,字符串的校验

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

  7. ASP.NET Core 请求/查询/响应参数格式转换(下划线命名)

    业务场景: 在 ASP.NET Core 项目中,所有的代码都是骆驼命名,比如userName, UserName,但对于 WebApi 项目来说,因为业务需要,一些请求.查询和响应参数的格式需要转换 ...

  8. DAX/PowerBI系列 - 查询参数用法详解(Query Parameter)

    PowerBI  - 查询参数用法详解(Query Parameter) 很多人都不知道查询参数用来干啥,下面总结一下日常项目中常用的几个查询参数的地方.(本人不太欢hardcode的东西) 使用查询 ...

  9. SpringBoot16 MockMvc的使用、JsonPath的使用、请求参数问题、JsonView、分页查询参数、JsonProperty

    1 MockMvc的使用 利用MockMvc可以快速实现MVC测试 坑01:利用MockMvc进行测试时应用上下文路径是不包含在请求路径中的 1.1 创建一个SpringBoot项目 项目脚手架 1. ...

随机推荐

  1. 我,Android开发5年,32岁失业,现实给我狠狠上了一课!

    如今的职场,风险是越来越高,不管你是应届生或者你是否中年,遇到好点的企业,红火那么做个三五年,运气不好,半年甚至2.3个月也就玩完了. 所以,即使你希望工作能稳定,但也会让你大失所望,职场寿命就那么几 ...

  2. 针对Cloud-init的可行性报告

    by hyc 针对Cloud-init的可行性报告 一.Cloud-init研究进展: (1)ubuntu镜像: 已在版本为ubuntu-server-14.04-amd64上实现了修改主机名和用户密 ...

  3. Salesforce Integration 概览(七) Data Virtualization数据可视化

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf Salesforc ...

  4. 《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)

    1.简介 按计划今天宏哥继续讲解css的定位元素的方法.但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用. 2.常用定位方法(8种) (1)id(2)name(3)class name( ...

  5. 【笔记】numpy.array基础(3)

    numpy数组的合并与分割 合并操作 concatenate拼接,只能操作维数一样的数据 且并不局限于两个元素 对于二维数组来说,可以通过控制axis来控制是按照行还是按照列来进行拼接操作,默认为ax ...

  6. Linux文件系统只读 解决方案:

    Linux系统Read-only file system,文件系统只读排查解决方案:文件系统只读机制:当文件系统自身的校验机制发现文件系统存在问题时,为避免文件系统受到进一步的损坏,系统会把文件系统设 ...

  7. NOIP 模拟 $33\; \rm Hunter$

    题解 \(by\;zj\varphi\) 结论题. 对于 \(1\) 猎人,他死的期望就是有多少个死在它前面. 那么对于一个猎人,它死在 \(1\) 前的概率就是 \(\frac{w_i}{w_i+w ...

  8. javascript html 鼠标放大镜效果

    1.鼠标放大镜效果 鼠标放大镜效果,将鼠标移入到左图片,则可以在其右边看到放大的图片,且鼠标移动滑块的大小即为右图显示图片.实际效果如下图所示:   <!DOCTYPE html> < ...

  9. docker 镜像配置

    Ubuntu14.04.Debian7Wheezy 对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址: DO ...

  10. C# 获得文件的执行路径的方法

    var path = System.Reflection.Assembly.GetEntryAssembly().Location;