FastAPI(4)- 路径参数 Path Parameters (下)

简介: FastAPI(4)- 路径参数 Path Parameters (下)

将两个函数顺序换过来

@app.get("/users/{user_id}")
async def read_user(user_id: str):
    return {"user_id": user_id}
# 顺序问题
@app.get("/users/me")
async def read_user_me():
    return {"user_id": "the current user"} 


image.png


这样就无法匹配到固定路径 /users/me 的函数了

 

路径转换器


前言

  • 当你有一个路径是 /files/{file_path} ,但是不确定 file_path 到底会取什么值,并不是固定的长度,可能是 /files/home/johndoe/myfile.txt 也可能是 /files/test/myfile.txt ,那怎么办呢?
  • 路径转换器出来啦!

 

实际栗子

# 路径转换器

@app.get("/files/{file_path:path}")

async def read_file(file_path: str):

   return {"file_path": file_path}

 

postman 请求结果

image.png

image.png


枚举类型的路径参数


# 导入枚举类
from enum import Enum
# 自定义枚举类
class ModelName(Enum):
    polo = "polo"
    yy = "yy"
    test = "test"
@app.get("/models/{model_name}")
# 类型限定为枚举类
async def get_model(model_name: ModelName):
    # 取枚举值方式一
    if model_name == ModelName.polo:
        return {"model_name": model_name, "message": "oh!!polo!!"}
    # 取枚举值方式二
    if model_name.value == "yy":
        return {"model_name": model_name, "message": "god!!yy"}
    return {"model_name": model_name, "message": "巴拉巴拉"}


参数传枚举值的请求结果

image.png

image.png


参数传非枚举值的请求结果

image.png

错误提示传的参数值并不是枚举类中的值

 

重点:路径参数可以不传吗?


先说答案,不行!路径参数是必传参数

 

实际栗子

# 路径参数 item_id

@app.get("/items/{item_id}")

async def read_item(item_id):

   return {"item_id": item_id}

 

假设不传 item_id

image.png

总结

路径参数是请求路径的一部分,如果不传,请求的是另一个路径,如果不存在就会 404

相关文章
|
数据采集 JSON JavaScript
全面拥抱FastApi —三大参数及验证
全面拥抱FastApi —三大参数及验证
|
3月前
|
开发框架 JSON API
Python中FastAPI项目使用 Annotated的参数设计
Python中FastAPI项目使用 Annotated的参数设计
|
6月前
|
Python
Fastapi进阶用法,路径参数,路由分发,查询参数等详解
Fastapi进阶用法,路径参数,路由分发,查询参数等详解
329 1
|
网络安全 Windows
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
|
前端开发 中间件 API
FastAPI第二天---参数校验
FastAPI第二天---参数校验
228 0
FastAPI第二天---参数校验
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架