FastAPI系列(05):请求信息之路径参数
本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/19503695
路径参数
官网:https://fastapi.tiangolo.com/tutorial/path-params/
基本用法
参数在 url 中声明,它将被解释为 path 参数
以使用与 Python 格式化字符串相同的语法来声明路径"参数"或"变量"
@app.get("/user/{user_id}")
def get_user(user_id):
print("user_id的类型是:",type(user_id))
return {"user_id": user_id}
示例
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/user/{user_id}")
def get_user(user_id):
print("user_id的类型是:",type(user_id)) # user_id的类型是: <class 'str'>;说明路径参数都是字符串
return {"user_id": user_id}
@app.get("/product/{product_id}")
def get_product(product_id):
return {"product_id": product_id}
if __name__ == '__main__':
uvicorn.run("path_parameter:app", port=8001, reload=True)
访问接口文档

下面path表示是路径参数,且是any类型、必填
通过下面Curl可以看到,请求后,参数放路径中

传入的参数是str类型

有类型路径参数
可以使用标准的 Python 类型标注为函数中的路径参数声明类型
如果期望是int:user_id
@app.get("/user/{user_id}")
def get_user(user_id:int):
print("user_id的类型是:",type(user_id)) # user_id的类型是: <class 'int'>
return {"user_id": user_id}
下面path表示是路径参数,且是integer类型、必填
通过下面Curl可以看到,请求后,参数放路径中

此时传入的参数是int类型

路由匹配顺序
示例:
@app.get("/book/{bookname}")
def get_book_info(bookname:str):
return {"bookname": bookname}
@app.get("/book/xiyouji")
def get_bookname_xiyouji_info():
return {"bookname": "xiyouji..."}
接口文档展示:

说明请求的是动态路径

交换顺序
@app.get("/book/xiyouji")
def get_bookname_xiyouji_info():
return {"bookname": "xiyouji..."}
@app.get("/book/{bookname}")
def get_book_info(bookname:str):
return {"bookname": bookname}
接口文档展示:

说明请求的是固定路径

总结:路由匹配顺序是从上到下,尽量避免动态的参数和固定的一样,如果不能避免,固定的要在动态的前面。
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!

浙公网安备 33010602011771号