方法
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
如何获取没有路径变量的路径?
我没有看到任何 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/
我通过使用@RequestParam 而不是@PathVariable 在我的控制器类中获取服务解决了我的问题
例子
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public ResponseEntity<UserDTO> getUser(@RequestParam String username)
不可能。你必须自己编写逻辑来提取路径变量。