我正在使用Jersey Java和Tomcat编写REST服务。这是我的问题 - 如何接受两个包含斜杠的@PathParam变量?即,注册/ {id} / {name},其中id可以是“i124 / af23 / asf”,名称可以是“bob / thatcher”。
@GET @Path("enrollment/{id}/{name}")
public String enrollPerson(@PathParam("id") String id, @PathParam("name") String name) {
System.out.println(name + " " + id);
return("Enrolled!");
}
我看到了这个问题:Tomcat, JAX-RS, Jersey, @PathParam: how to pass dots and slashes?回答了我的一部分问题,但它给出了一个包含斜杠的参数的解决方案(我有两个带斜杠的参数)。
任何帮助将不胜感激!
答案 0 :(得分:4)
我相信答案是在发送之前对字符串进行URLE编码,然后在方法中对字符串进行URL解码。所以我的方法应该是:
@GET @Path("enrollment/{id}/{name}")
public String enrollPerson(@PathParam("id") String id, @PathParam("name") String name) {
String decodedName = URLDecoder.decode(name, "UTF-8");
String decodedId = URLDecoder.decode(id, "UTF-8");
System.out.println(decodedName + " " + decodedId);
return("Enrolled!");
}