版本号
1.8.4
什么问题
接口定义:
路径为/api/user/:id
方式为GET
id设置为路径参数
Controller中处理的方法为:
public String get(@PathVariable("id") String id)
当在Yapi中运行路径参数id什么都不填时,在后台接收到的URL地址为/api/user/:id,接收到的路径参数id值为":id",而不是null。在其他接口测试工具中不填写路径参数时是404找不到的错误。因为代码逻辑中有对id进行判断空值的逻辑,现在传空值接收到的是":id",所以测试案例跑不过,请问Yapi就是这样处理的吗?还是路径参数Yapi有其他的设置方法?谢谢!
什么浏览器
Chrome 78
什么系统(Linux, Windows, macOS)
Yapi部署到Linux虚拟机
浏览器运行系统为macOS
2条答案
按热度按时间iibxawm41#
yapi/common/postmanLib.js
Lines 391 to 398 in 96fe7ee
| | interfaceRunData.req_params.forEach(item=>{ |
| | letval=handleValue(item.value,currDomain.global); |
| | if(requestParams){ |
| | requestParams[item.name]=val; |
| | } |
| | path=path.replace(
:${item.name}
,val||:${item.name}
); || | path=path.replace(
{${item.name}}
,val||{${item.name}}
); || | }); |
对于path没有对应值时,没有做相关替换.
我有几个疑问
一般来说路径参数是否为必须?
如果这里允许可空,那么如何处理比较好?
对于
/user/list/{type}
和/user/{type}/list
type为空时该作何请求?
fhg3lkii2#
您好,首先非常感谢您的帮助。
对于您提出的问题:
1、我个人认为路径参数应该是必须的。
2、对于/user/list/{type}和/user/{type}/list 当type为空时,请求的应该是/user/list
所以对于路径参数那就应该是必须有值的,没有值就匹配不到预期的路径了,那我代码逻辑应该不用判断路径参数空值。我对于Yapi这样处理路径参数没有疑问了。非常感谢!