Python FastAPI 多参数传递的示例详解

 更新时间:2022年12月15日 15:46:17   作者:Aidon-东哥博客  
这篇文章主要介绍了Python FastAPI 多参数传递,FastAPI通过模板来匹配URL中的参数列表,大概分为三类方式传递参数,每种方式结合示例代码给大家介绍的非常详细,需要的朋友可以参考下

Python FastAPI请求参数传递

FastAPI多参数传递类型

FastAPI通过模板来匹配URL中的参数列表,大致有如下三类方式传递参数:

  • 路径参数传递:获取自定义的构造URL中的参数
  • GET参数传递:获取一个URL后面带的?param1=1&param2=2这种类型参数
  • POST参数传递:获取POST请求中的参数,因为POST是加密的,因此更加安全,但有额外开销,测试API使用额外工具或插件或者自己写Request等

路径多参数传递

  • 访问url:
  • http://127.0.0.1:8001/uname=goudan/sex=1/age=18
  • 匹配模板:
  • http://127.0.0.1:8001/uname=值1/sex=值2/age=值3
  • 对应API代码
import uvicorn
from fastapi import FastAPI

#构造FastAPI实例
app = FastAPI(name="mutilParam")

""""
路径多参数传递
访问url:
http://127.0.0.1:8001/uname=goudan/sex=1/age=18
匹配模板:
http://127.0.0.1:8001/uname=值1/sex=值2/age=值3
对应API代码:
"""

@app.get("/uname={uname}/sex={sex}/age={age}")
async def api1(uname: str, sex, age: str):
    return {
        "uname": uname,
        "sex": sex,
        "age": age,
    }

GET请求多参数传递

访问url:http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18 

匹配模板:http://127.0.0.1:8001/get?uname=值1&sex=值2&age=值3 

对应API代码

import uvicorn
from fastapi import FastAPI

#构造FastAPI实例
app = FastAPI(name="mutilParam")

""""
GET请求多参数传递
访问url:
http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18
匹配模板:
http://127.0.0.1:8001/get?uname=值1&sex=值2&age=值3
对应API代码:
"""
@app.get("/get")
async def api2(uname=Query(None), sex=Query(...), age=Query(None)):
    return {
        "uname": uname,
        "sex": sex,
        "age": age,
    }

注意:

参数里uname=Query(None):
uname对应着传入URL里的?uname=xxx
Query()是导的包from fastapi import Query
Query(None)里的None是默认值,可以是任意值,当URL里没有传入这个参数时,就会用默认值替代;当None为…,则表示为必须传递参数

POST请求多参数传递

  • 访问url:

http://127.0.0.1:8001/post
body中参数:{“uname”:“goudan”,“sex”:“1”,“age”:“18”}

  • 匹配模板:

http://127.0.0.1:8001/post

  • body中参数:{uname=值1, sex=值2, age=值3}

对应API代码

import uvicorn
from fastapi import FastAPI

#构造FastAPI实例
app = FastAPI(name="mutilParam")

""""
POST请求多参数传递
"""
@app.post("/post")
async def api3(uname=Body(None), sex=Body(...), age=Body(None)):
    return {
        "uname": uname,
        "sex": sex,
        "age": age,
    }

注意:

Post参数传递几乎和GET相似,就是将Query替换成来写,参数里uname=Body(None):
Body()是导的包from fastapi import Body
Body的写法与用法和Query相同,括号里是默认值
uname=Body(None)里的None是默认值,可以是任意值,当URL里没有传入这个参数时,就会用默认值替代;当None为…,则表示为必须传递参数

案例完整代码

三种参数传递API的完整代码如下:

import uvicorn
from fastapi import FastAPI
from fastapi import Query
from fastapi import Body

#构造FastAPI实例
app = FastAPI(name="mutilParam")

""""
路径多参数传递
访问url:
http://127.0.0.1:8001/uname=goudan/sex=1/age=18
匹配模板:
http://127.0.0.1:8001/uname=值1/sex=值2/age=值3
对应API代码:
"""

@app.get("/uname={uname}/sex={sex}/age={age}")
async def api1(uname: str, sex, age: str):
    return {
        "uname": uname,
        "sex": sex,
        "age": age,
    }

""""
GET请求多参数传递
访问url:
http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18
匹配模板:
http://127.0.0.1:8001/get?uname=值1&sex=值2&age=值3
对应API代码:
参数里uname=Query(None):
    uname对应着传入URL里的?uname=xxx
    Query()是导的包from fastapi import Query
    Query(None)里的None是默认值,可以是任意值,当URL里没有传入这个参数时,就会用默认值替代;当None为...,则表示为必须传递参数
"""
@app.get("/get")
async def api2(uname=Query(None), sex=Query(...), age=Query(None)):
    return {
        "uname": uname,
        "sex": sex,
        "age": age,
    }


""""
POST请求多参数传递
访问url:
http://127.0.0.1:8001/post
{"uname":"goudan","sex":"1","age":"18"}
匹配模板:
http://127.0.0.1:8001/post
{"uname":"xxx","age":"x"}
对应API代码:

Post参数传递几乎和GET相似,就是将Query替换成来写:
参数里uname=Body(None):
Body()是导的包from fastapi import Body
Body的写法与用法和Query相同,括号里是默认值
uname=Body(None)里的None是默认值,可以是任意值,当URL里没有传入这个参数时,就会用默认值替代;当None为...,则表示为必须传递参数
"""
@app.post("/post")
async def api3(uname=Body(None), sex=Body(...), age=Body(None)):
    return {
        "uname": uname,
        "sex": sex,
        "age": age,
    }

#主函数
if __name__ == '__main__':
    #启动服务
    uvicorn.run(app='MutilParamOfAPI:app', host="127.0.0.1", port=8001, reload=False)

案例完整测试

启动服务

在完整代码案例中任何位置—>右键—>Run MutilParamOfAPI—>信息如下:

/Users/liyadong/PycharmProjects/MyAPI/MutilParamOfAPI.py 
INFO:     Started server process [31526]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit)

访问测试

  • 路径多参数测试

浏览器访问输入地址栏如下:

http://127.0.0.1:8001/uname=goudan/sex=1/age=18

  • 浏览器页面信息如下:
{"uname":"goudan","sex":"1","age":"18"}

{"uname":"goudan","sex":"1","age":"18"}

GET请求多参数测试

  • 浏览器访问输入地址:http://127.0.0.1:8001/get?uname=goudan&sex=1&age=18

浏览器页面信息如下:

{"uname":"goudan","sex":"1","age":"18"}

POST请求多参数测试

到此测试就完毕了,关于可传参数和必传参数,大家自行减少参数键值对即可。

参考资料:
https://blog.csdn.net/weixin_35757704/article/details/123392281

到此这篇关于Python FastAPI 多参数传递的文章就介绍到这了,更多相关Python FastAPI 多参数传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于百度云文字识别API

    Python基于百度云文字识别API

    这篇文章主要介绍了Python基于百度云文字识别API,用Python实现最简单的文字识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Python光学仿真光的偏振编程理解学习

    Python光学仿真光的偏振编程理解学习

    这篇文章主要为大家介绍了通过Python光学仿真来理解光的偏振编程学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 使用python/pytorch读取数据集的示例代码

    使用python/pytorch读取数据集的示例代码

    这篇文章主要为大家详细介绍了使用python/pytorch读取数据集的示例,文中的示例代码讲解详细,具有一定参考价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • PyQt5+serial模块实现一个串口小工具

    PyQt5+serial模块实现一个串口小工具

    这篇文章主要为大家详细介绍了如何利用PyQt5和serial模块实现一个简单的串口小工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-01-01
  • 将python文件打包exe独立运行程序方法详解

    将python文件打包exe独立运行程序方法详解

    这篇文章主要介绍了将python文件打包exe独立运行程序方法详解,需要的朋友可以参考下
    2020-02-02
  • python接口自动化框架实战

    python接口自动化框架实战

    这篇文章主要介绍了python接口自动化框架实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python模块引入问题和解决方案

    python模块引入问题和解决方案

    本文主要介绍了python模块引入问题和解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python for循环你了解吗

    Python for循环你了解吗

    这篇文章主要为大家介绍了Python for循环,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Python+Pygame实现简单的射击小游戏

    Python+Pygame实现简单的射击小游戏

    要说什么游戏能够获得大家的喜爱,唯射击游戏莫属!本文将利用Python和Pygame库制作一个简单的射击小游戏,感兴趣的小伙伴可以了解一下
    2022-04-04
  • python使用celery实现订单超时取消

    python使用celery实现订单超时取消

    这篇文章主要为大家详细介绍了python使用celery实现订单超时取消,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03

最新评论