FastApi-08-路径参数校验

简介: FastApi-08-路径参数校验

背景


和查询参数一样,路径参数也需要进行限定。


Path


通常,我们会直接使用 name:str='phyger'的方式来限定路径参数的类型和默认值,但是对于路径参数的高级元数据,我们需要借助 FastApi 为我们提供的 Path 对象来实现。


通常路径参数时必须的,所以即便你指定了默认参数,其依然是必须的。


路径参数的 title


from fastapi import Path
@app.get('/path/{name}')
async def pth(name:str=Path(...,title='path name')):
    return {'path_name':name}
复制代码


限定路径参数的格式


数值校验


大于2:gt=2
小于2:lt=2
大于等于2:ge=2
小于等于2:le=2
复制代码


from fastapi import Path
@app.get('/path/{name}')
async def pth(* ,name:int=Path(...,title='path name',ge=2),q:str):
    return {'path_name':name}
复制代码


网络异常,图片无法展示
|


路径参数的顺序问题


当我们的业务模型中有两个uri,一个路径参数是固定值,另一个是路径参数是变量,该如何处理呢?


假设当前业务中的视图有如下两条:


@app.get('/path/{name}')
async def pth(name:str=Path(...,title='path name')):
    return {'path_name':name}   
@app.get('/path/default')
async def f1():
    return {'msg':'I am default path.'}
复制代码


分析以上代码,当我们请求/path/default的时候,我们会得到{'msg':'I am default path.'}的结果。


测试一下:


网络异常,图片无法展示
|


这是怎么回事?和我预期的不一致。


这是因为代码中的两个uri冲突了,对于/path/default而言,/path/{name}已经拦截了所有符合/path/xxx的请求。我们只要将他两的顺序调整为固前变后(固定路径参数在前,变化路径参数在后)即可。


修改的代码


@app.get('/path/default')
async def f1():
    return {'msg':'I am default path.'}
@app.get('/path/{name}')
async def pth(name:str=Path(...,title='path name')):
    return {'path_name':name}
复制代码


再次测试:


网络异常,图片无法展示
|


可以看到,/path/default已经成功拦截并返回正确的结果。

再测试下非固定参数的功能:


网络异常,图片无法展示
|


可以看到,我们的非固定路径参数的其他功能均正常。


感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!

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