如何将带有'/'符号的值作为get参数传递给控制器​​?

时间:2019-07-04 14:54:08

标签: java spring spring-boot url httprequest

我有控制器:

@RestController
public class MyController {

    @GetMapping(value = "/products/{value}")
    public String get(@PathVariable String value) {
        System.out.println(value);
        return "OK";
    }
}

启动服务器后,我尝试发送如下消息:

http://localhost:8080/products/Mazda

,我在控制台 Mazda 中看到了。但是当我用反斜杠发送值时:

http://localhost:8080/products/Mazda\6

我得到一个错误:

  

此应用程序没有针对/ error的显式映射,因此您看到了   作为后备。

如何将带有'\'符号的值作为get参数传递给控制器​​?

我希望:马自达\ 6

1 个答案:

答案 0 :(得分:0)

首先,您需要在客户端对路径变量进行编码。这是Java的示例:

URLEncoder.encode("Mazda\\6", "UTF-8");

结果将为Mazda%5C6。 第二步是allow the processing of requests在其URL中包含特殊字符。

第三,在控制器中解码字符串:

String decodedValue = URLDecoder.decode(value, "UTF-8");