Amm*_*mar 3 java rest url spring urlencode
我有一个这样的REST API:
@RequestMapping(value = "/services/produce/{_id}", method = RequestMethod.PATCH,
consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public String patchObject(@RequestBody PatchObjectRequest obj,
@PathVariable("_id") String id) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
我的问题是可能给出的id是以下形式:
US%2FCA%2FSF%2FPlastic
Run Code Online (Sandbox Code Playgroud)
这是"US/CA/SF/Plastic"的URL编码.
我的问题是,当一个%字符放入URL时,@ RequestMapping不会将它映射到此方法,它将返回404.有没有办法接受在其中包含%字符的ID作为URL的一部分?
小智 7
您收到此错误,因为它使用它作为路径变量,它被解码,然后服务器尝试将其匹配到不退出的路径.几年前发布的类似问题:如何匹配包含"/"的@pathVariable的Spring @RequestMapping?,urlencoded正斜杠正在破坏URL.
你一个很好的选择是改变_id来自@PathVariable于@RequestParam和解决的问题,并从路径中删除它.