javaspring@RequestParam混合命名params和Map<String,String>params
我正在编写一个Spring引导应用程序,它通过REST端点接收参数并将它们转发到另一个系统。收到的参数包含一些已知字段,但也可能包含多个变量字段,以filter
开头,后跟未定义的名称:
example.com?id=1&name=foo&filter1=2&filterA=B&[...]&filterWhatever=something
如您所见,有两个参数id
和name
,以及多个以filter
开头的参数。调用目标系统时,我需要从param键中删除filter
,并将其后的所有内容用作键:
targetsystem.com?id=1&name=foo&1=2&A=B&[...]&whatever=something
(不再筛选密钥)
这本身不是问题,我只需@RequestParam Map<String, String> params
,流式/循环参数,并根据需要修改即可。但使用Swagger作为API文档工具,我想列出所有已知参数,以便客户机可以看到实际支持的参数
我尝试混合命名参数并捕获所有参数,但它无法识别处理程序:
myEndpoint(final @RequestParam String id, final @RequestParam String name, final @RequestParam Map<String, String> remainingParams)
是否可以映射特定参数并捕获Map<String,String>
中的所有其他内容?或者还有其他可能性,比如使用regex模式映射所有以filter
开头的参数
不幸的是,我无法更改源系统和目标系统
# 1 楼答案
你可以去上课
然后
另见:Spring @RequestParam with class
# 2 楼答案
试试看
# 3 楼答案
如果你的只对使用通用映射的关注仅仅是虚张声势地表示准确,那么为什么不直接将
@ApiImplicitParams
annotation添加到你的端点呢?这将允许您指定在Swagger输出中需要哪些参数: