python中fastapi设置查询参数可选或必选

 更新时间:2022年06月06日 08:44:17   作者:​ 小飞牛   ​  
这篇文章主要介绍了python中fastapi设置查询参数可选或必选,文围绕主题展开详细的内容介绍,具有一定的参考价值需要的小伙伴可以参考一下

前言:

在fastapi中,我们定义的查询参数是可以设置成:必选参数 or 可选参数。

可选查询参数

  • 只要给查询参数的默认值设置为None,表示该查询参数是可选参数。
 from fastapi import FastAPI
 ​
 app = FastAPI()​
 @app.get("/items/{item_id}")
 async def read_item(item_id: str, q=None):
     data = {"item_id": item_id}
     if q:
         data["q"] = q
     return data

补充:此时路径操作函数内的参数有两个,一个是路径参数item_id,一个是查询参数q,fastapi是可以区分他们的。

必选查询参数

  • 当你为查询参数设置默认值时,则该参数在URL中不是必须的。
  • 如果你不想添加默认值,而只是想使该参数成为可选的,则将默认值设置为 None
  • 但当你想让一个查询参数成为必需的,不声明任何默认值就可以.
  • 比如:这里的查询参数 needy 是类型为 str 的必需查询参数。
 from fastapi import FastAPI
 ​
 app = FastAPI()​
 @app.get("/items/{item_id}")
 async def read_user_item(item_id: str, needy: str):
     item = {"item_id": item_id, "needy": needy}
     return item
  • 如果在URL中没有查询参数needy,则报错
 {
     "detail": [
         {
             "loc": [
                 "query",
                 "needy"
             ],
             "msg": "field required",
             "type": "value_error.missing"
         }
     ]
 }

可选和必选参数共存

  • 也可以定义一些参数为必需的,一些具有默认值,而某些则完全是可选的
  • 此时:itme_id是路径参数,needy是必选路径参数,skip是有默认值必选查询参数,limit是可选查询参数。
 from fastapi import FastAPI
 ​
 app = FastAPI()
 @app.get("/items/{item_id}")
 async def read_user_item(
     item_id: str, needy: str, skip: int = 0, limit=None
 ):
     item = {"item_id": item_id, "needy": needy, "skip": skip, "limit": limit}
     return item

为可选参数做类型提示

  • 比如一个可选的参数q,如有该参数时,他的类型是整型,此时定义类型提示如下
  • 使用typing模块下的Union做类型提示,Union[int, None]表示类型是int或者None
  • 此时对于URL:http://127.0.0.1:8000/items/12?q=12,参数q就会自动转化为数字12
 from typing import Union​
 from fastapi import FastAPI
 app = FastAPI()​
 @app.get("/items/{item_id}")
 async def read_item(item_id: str, q: Union[int, None] = None):
     data = {"item_id": item_id}
     if q:
         data["q"] = q
     return data

补充1:

  • 可能为空的情况做类型提示,一般使用一个比typing.Union更加方便的类型:typing.Optional
  • 因为,Optional[X] is equivalent to Union[X, None]
  • 所以,上面的类似等价于q: Optional[int] = None\

补充2:

  • 只要给查询参数默认值None就表示它是可选查询参数,和类型提示无关。
  • 类型提示的功能在于如果该值存在是他应该是什么类型的变量并做类型转换和校验。

到此这篇关于python中fastapi设置查询参数可选或必选的文章就介绍到这了,更多相关python fastapi 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现一个服务器监听多个客户端请求

    Python实现一个服务器监听多个客户端请求

    这篇文章主要为大家详细介绍了Python如何实现一个服务器监听多个客户端请求,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python jieba库分词模式实例用法

    Python jieba库分词模式实例用法

    在本篇文章里小编给大家分享的是一篇关于Python jieba库分词模式实例用法,有兴趣的朋友们可以学习参考下。
    2021-01-01
  • Python爬虫beautifulsoup4常用的解析方法总结

    Python爬虫beautifulsoup4常用的解析方法总结

    今天小编就为大家分享一篇关于Python爬虫beautifulsoup4常用的解析方法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • linux环境中没有网络怎么下载python

    linux环境中没有网络怎么下载python

    在本篇文章里小编给大家分享了关于linux环境中没有网络怎么下载python的相关知识点内容,需要的朋友们参考下。
    2019-07-07
  • 对pytorch网络层结构的数组化详解

    对pytorch网络层结构的数组化详解

    今天小编就为大家分享一篇对pytorch网络层结构的数组化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 总结几个非常实用的Python库

    总结几个非常实用的Python库

    Python一直被自称“batteries included”,就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用. 除了内建的模块外,Python还有大量的第三方模块,直接使用pip安装即可使用.下面给大家简单介绍几个Python非常实用的自带库和第三方库,需要的朋友可以参考下
    2021-06-06
  • pandas中遍历dataframe的每一个元素的实现

    pandas中遍历dataframe的每一个元素的实现

    这篇文章主要介绍了pandas中遍历dataframe的每一个元素的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 在langchain中对大模型的输出进行格式化实现

    在langchain中对大模型的输出进行格式化实现

    这篇文章主要为大家介绍了在langchain中对大模型的输出进行格式化实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Python @property使用方法解析

    Python @property使用方法解析

    这篇文章主要介绍了Python @property使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 基于Python实现人工智能算法的方法详解

    基于Python实现人工智能算法的方法详解

    Python已经成为了机器学习领域最受欢迎的编程语言之一,Python的简洁性和易用性使其成为了开发人员和数据科学家的首选语言,在本文中,我们将探讨如何使用Python实现人工智能算法,感兴趣的小伙伴跟着小编一起来探讨吧
    2023-06-06

最新评论