什么是查询参数?

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. Typora加七牛云实现实时图片自动上传

    Typora加七牛云实现实时图片自动上传 前言: ​ Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别.重点是免费! ​ 其风格简约 ...

  2. Linux命令(六)之防火墙iptables的相关操作以及端口的开放

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  3. 1051 Pop Sequence (25分)栈

    刷题 题意:栈的容量是5,从1~7这7个数字,写5个测试数据 做法:模拟栈 #include<bits/stdc++.h> using namespace std; const int m ...

  4. 从官网下载历史版本的java

    下载历史版本的java 因为一些bug需要降低java版本来尝试解决,但是好多都要收费,我就搞不明白了,官网都有免费的我要你的收费软件干嘛 首先直接搜索java,进入Oracle,或者 Java SE ...

  5. 【笔记】浅谈支持向量机(SVM)

    SVM支持向量机 支持向量机的思想原理 使用支持向量机的思想,既可以解决回归问题,又可以解决分类问题 那么支持向量机的思想是什么? 已经知道逻辑回归这种算法的本质就是在一个平面中寻找决策边界,而分类算 ...

  6. Redis奇怪的姿势

    Redis奇怪的姿势 写在前面 之前渗透 摸鱼 时和小伙伴发现了一个redis,存在未授权,是win服务器但是没有路径,度娘了之后发现了这个姿势,特此学习记录一下. 写入启动项 环境搭建 window ...

  7. weblogicSSRF漏洞复现

    一.关于SSRF 1.1 简介: SSRF(Server-Side Request Forgery)服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞,一般情况下,SSRF 攻击的目标 ...

  8. 题解 park/chase

    传送门 这题考试的时候觉得时间复杂度假了,\(n \geqslant 1000\)的部分直接瞎写了个特殊性质上去,结果假的时间复杂度能有60pts-- 比较大的数组无论如何不要直接全部memset!如 ...

  9. 天地图API加载ArcGIS Server服务

    发布的服务需要选择WMS功能 wmsLayer = new T.TileLayer.WMS("http://127.0.0.1:6080/arcgis/services/Demo/Defau ...

  10. Jackson的使用和定制

    springmvc在使用注解@ResponseBody返回一个POJO对象时, 其内部会借助Jackson来完成POJO转化为JSON的工作. public class Message { priva ...