[英]Spring @RequestParam - Mixing named params and Map<String,String> params
我正在編寫一個Spring Boot應用程序,該應用程序通過REST端點接收參數並將其轉發到另一個系統。 收到的參數包含一些已知字段,但也可能包含多個以filter
開頭的變量字段,后跟一個未定義的名稱:
example.com?id=1&name=foo&filter1=2&filterA=B&[...]&filterWhatever=something
如您所見,有參數id
和name
,以及以filter
開頭的多個參數。 調用目標系統時,我需要從參數鍵中刪除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>
所有其他內容? 還是還有其他可能性,例如使用正則表達式模式從filter
映射所有參數?
不幸的是,我無法更改源系統和目標系統。
如果您只關心使用通用映射只是Swagger是准確的,為什么不只將@ApiImplicitParams
注釋添加到端點? 這可以讓您指定Swagger輸出中需要哪些參數:
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "name", type = "String", required = true, paramType = "query"),
@ApiImplicitParam(name = "id", type = "String", required = true, paramType = "query")
})
你可以上課,例如
@Data
public class Paramss {
@NotNull
private String a;
private String b;
}
接着
@GetMapping
public Object params( @Valid @ModelAttribute Paramss params ) {
return params;
}
另請參見: Spring @RequestParam與類
嘗試
@RequestMapping
public String books(@RequestParam Map<String, String> requestParams, Other params)
{
//Your code here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.