当调用get http://localhost:8080/things/ZhaD2lk27XQPRJtwrABltd+UTWXcbnY%2FTrpxGP7VDVo=
我的春节,启动应用程序RestController有这样的请求处理程序:为什么使用springboot其余控制器将加号(+)解码为url路径中的space()?
@RequestMapping("/things/{thingId}")
public ResponseEntity<Thing> getThing(
@PathVariable String thingId) {
System.out.println("thingId=" + thingId);
...
结果如下正在打印ZhaD2lk27XQPRJtwrABltd UTWXcbnY/TrpxGP7VDVo=
什么,而不是我本来期望ZhaD2lk27XQPRJtwrABltd+UTWXcbnY/TrpxGP7VDVo=
。
正如你所看到的,正在变成一个空间。这不应该发生在路径部分,只有查询部分。这就是为什么我用来构建URL的Spring UriComponentsBuilder.build().encode()
没有把加号变成%2B
。
我需要调整应用程序已获得编码斜杠(/)的工作。详细信息请参见REST Endpoint unreachable if ID in URL contains %2F。
我正在使用SpringBoot 1.4.4.RELEASE,它使用Tomcat嵌入8.5.11。
我已经尝试从Spring RestTemplate,Postman和Chrome中调用服务。在所有情况下,相同的结果,加上变成一个空间
你在浏览器中输入网址吗?还是你用js调用你的服务?还是你从一个Java客户端调用你的服务? – reos