如何在没有路径变量的情况下获取请求 URI?

问题描述 投票:0回答:3

方法

request.getRequestURI()
返回带有路径变量的URI。 以下示例服务采用路径变量。如何获得没有路径变量的 URL

@RequestMapping(value = "/getUser/{username}", method = RequestMethod.GET)
public ResponseEntity<UserDTO> getUser(@PathVariable String username) 

如果我提出这样的要求(

localhost:8080/user/getUser/tommy

)

request.getRequestURI()
返回路径变量。

user/getUser/tommy

我想得到这样的结果:

user/getUser/
或者
user/getUser

如何获取没有路径变量的路径?

java spring-boot spring-mvc spring-restcontroller spring-rest
3个回答
0
投票

我没有看到任何 Spring MVC 方式。您可以从可用的

HttpServletRequest
方法之一进行解析。

例如

@Controller
public class SampleController {

    @GetMapping("/sample/path/{last}")
    public ResponseEntity<Object> sampleMethod(@PathVariable String last, HttpServletRequest request) {

        System.out.println(request.getContextPath());
        System.out.println(request.getRequestURI());

        String path = request.getServletPath();
        System.out.println(path);
        System.out.println(path.substring(0, path.lastIndexOf(last)));

        return ResponseEntity.ok(last);
    }
}
/context
/context/sample/path/boom
/sample/path/boom
/sample/path/

0
投票

我通过使用@RequestParam 而不是@PathVariable 在我的控制器类中获取服务解决了我的问题

例子

@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public ResponseEntity<UserDTO> getUser(@RequestParam String username) 

-1
投票

不可能。你必须自己编写逻辑来提取路径变量。

© www.soinside.com 2019 - 2024. All rights reserved.