如何在 Spring @RestController
中注入(inject)完整的子路径?
在我的示例中,我希望注入(inject) subpaths=/test/sub/path
@RestController
public class MyController {
@GetMapping(value = "/v1/{subpaths}", produces = MediaType.APPLICATION_JSON)
public Object handle(@PathVariable String subpaths) {
//this is not called for /v1/test/sub/path
}
}
最佳答案
实际上,如果想法是有一个单一的入口点,我们可以捕获所有内容,然后提取子路径。 以下说明了相同的内容:
@RestController
public class MyController {
@GetMapping(value = "/v1/parentPath/**", produces = MediaType.APPLICATION_JSON)
public Object handle(@RequestParam(name = "myParam") String myParam,HttpServletRequest request) {
//Get the complete url
String url=request.getRequestURL();
String[] paths=url.split("parentPath/");
//paths[1] is the desired subPath
//Provides URI
// example : /context-path/v1/parentPath/subPath
String uri=request.getRequestURI();
//Returns query string, ex: test=abc&page=1
String queryString=request.getQueryString();
//Returns query parameters as map,Includes both query and ported form data
Map<String, String[]> parameterMap=request.getParameterMap();
}
}
HttpServletRequest:由Spring自动注入(inject)。(将尝试找到一些文档并将其添加到此处)
为了安全起见,添加了parentPath,以确保我们不会捕获v1下的所有请求
关于java - 如何在Spring @RestController中注入(inject)完整的请求路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71046701/