呼叫时, http://localhost:8080/things/ZhaD2lk27XQPRJtwrABltd+UTWXcbnY%2FTrpxGP7VDVo=
我的春季启动应用程序restController带有请求处理程序:
@RequestMapping("/things/{thingId}")
public ResponseEntity<Thing> getThing(
@PathVariable String thingId) {
System.out.println("thingId=" + thingId);
...
导致以下打印ZhaD2lk27XQPRJtwrABltd UTWXcbnY/TrpxGP7VDVo=
,而不是我期望的ZhaD2lk27XQPRJtwrABltd+UTWXcbnY/TrpxGP7VDVo=
。
您可以看到,加号正在变成一个空间。这不应该在路径部分中发生,而只会发生查询部分。这就是为什么我用来构建URL的弹簧UriComponentsBuilder.build().encode()
不会将加号变成%2B
的原因。
我需要调整应用程序以使编码的斜杠(/)工作。有关详细信息,如果URL中的ID包含%2F,请参见REST端点无法到达。
我正在使用Springboot 1.4.4。我尝试从Spring Resttemplate,Postman和Chrome调用该服务。在所有情况下,相同的结果,加号都变成了空间
我在识别我的IDE已自动添加了Spring-boot-starter-undertow之后能够解决。我没有从Spring-Boot-Starter-Web中排除Spring-boot-Starter-Tomcat,因此我不确定封面下发生了什么,而是删除了Spring-Boot-Starter-Starter-starter-undtow依赖性。