如何将 URL 作为路径变量传递

qcc*_*ect 5 java spring-boot

我试图将 URL 作为路径变量传递,但是当我输入 URL 作为参数并访问路由时,它返回错误。我希望在它作为参数传入路由后能够看到地址。

@RequestMapping("/addAddress/{address}")
public String addAddress(@PathVariable("address") String address) {
    System.out.println("Address: "+address)
    return address;
}
Run Code Online (Sandbox Code Playgroud)

例如,如果我输入 URL:

localhost:8080/addAddress/http://samplewebsite.com
Run Code Online (Sandbox Code Playgroud)

我应该看到

http://samplewebsite.com 
Run Code Online (Sandbox Code Playgroud)

在后端打印出来。

bur*_*ete 3

您可以执行以下操作;

@RequestMapping("/addAddress/**")
public String addAddress(HttpServletRequest request) {
    String fullUrl = request.getRequestURL().toString();
    String url = fullUrl.split("/addAddress/")[1];
    System.out.println(url);
    return url;
}
Run Code Online (Sandbox Code Playgroud)

@PathVariable是不可行的,因为/字符破坏了您正在寻找的行为,除非您编码/解码,但我觉得这对于端点用户和后端来说都是一种更简单的方法。

此外,这不会获取请求查询部分,例如?input=user,为此您可以添加此逻辑