ReSTful服务由于路径参数值具有正斜杠而变得矛盾
我有这样的API-ReSTful服务由于路径参数值具有正斜杠而变得矛盾,rest,spring-boot,resttemplate,Rest,Spring Boot,Resttemplate,我有这样的API- /objectname/name /objectname/collection/id 这两个API都是间接相关的 调用名称值为“A/B类型”的第一个API时出现问题。所以rest控制器实际上调用了第二个API,而不是第一个(/objectname/A/B Type),因为正斜杠。如何处理这种情况 作为旁注,我正在对参数值进行编码 我使用SpringBoot和RestTemplate开发了restful服务。冲突来自于直接在资源路径中指定名称,并作为@PathVariable传
/objectname/name
/objectname/collection/id
/objectname/A/B Type
),因为正斜杠。如何处理这种情况
作为旁注,我正在对参数值进行编码
我使用SpringBoot和RestTemplate开发了restful服务。冲突来自于直接在资源路径中指定名称,并作为@PathVariable传递给函数 您的代码如下所示:
@RequestMapping(value = "objectname/{name}", method = RequestMethod.GET)
public String yourMethodName(@PathVariable String name){
return name;
}
为了避免这种冲突,我建议(如果允许修改@RestController或@RepositoryRestResource层)在@RequestParam中传递对象的值
例如:
@RequestMapping(value = "/objectname", method = RequestMethod.GET)
public String yourMethodName(@RequestParam(name = "name", required = true) String name){
return name;
}
也就是说,当您使用RestTemplate构建请求时,您应该对您的名称进行url编码(A%2FB%20Testing),并构建以下url:
我在本地对此进行了测试,效果良好。如何对参数进行编码?URL编码?我们已经在做了,但是没有luckNote:你可以看看下面的帖子,作为我提供的解决方案的替代方案(将值作为RequestParam传递更容易实现)。我明白你的意思了,我不能更改API“RequestMapping”。问题是我是否已经将API请求映射为“/objectName”。我们还有别的办法解决吗?