yapi 关于路径参数空值的疑问

dw1jzc5e  于 2022-10-27  发布在  其他
关注(0)|答案(2)|浏览(297)

版本号

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

iibxawm4

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为空时该作何请求?

fhg3lkii

fhg3lkii2#

您好,首先非常感谢您的帮助。
对于您提出的问题:
1、我个人认为路径参数应该是必须的。
2、对于/user/list/{type}和/user/{type}/list 当type为空时,请求的应该是/user/list
所以对于路径参数那就应该是必须有值的,没有值就匹配不到预期的路径了,那我代码逻辑应该不用判断路径参数空值。我对于Yapi这样处理路径参数没有疑问了。非常感谢!

相关问题