java - 如何在Spring @RestController中注入(inject)完整的请求路径?

标签 java spring spring-mvc

如何在 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/

相关文章:

java - JPA使用flush来触发异常并停止执行

javascript - 当有多个具有相同id的div时,使用jquery获取特定div内的变量

java - 混淆应用程序是否存在任何潜在问题?

java - 如何将 JSP 转换为 Thymeleaf?

Spring-Boot - 错误处理

java - 数组之间的交互(Java 新手)

java - 如何进行n重交叉验证(Mahout)?

java - Android SQLite -- 使用 whereArgs 背后的逻辑是什么

java - Spring MVC-以编程方式从appContext.xml加载bean定义

java - Spring MVC : Using User password to create a Java keystore, 和稍后的访问 key