java – 如何在url中为逗号分隔的参数传递休息服务的get方法
作者:互联网
我有像这样的网络服务
@GET
@Produces("application/json")
@Path("{parameter1}/july/{param2},{param3},{param4}/month")
public Month getResult(@PathParam("parameter1") String parameter1, @PathParam("param2") PathSegment param2 , @PathParam("param3") PathSegment param3, @PathParam("param4") PathSegment param4) {
return action.getResult(parameter1, new Integer(param2.getPath()), new Integer(param3.getPath()), new Integer(param3.getPath()));
}
如果我从我的测试类中调用此Web服务,它可以正常工作;但如果我通过浏览器调用它,我会收到消息,因为找不到该服务.
我通过浏览器使用的网址是
http://localhost:8080/WebApp/services/seating/mylogin/july/1,0,0/month
如果我使用网址作为
http://localhost:8080/WebApp/services/seating/mylogin/fly/1/0/0/month
并相应地更改服务中的路径它工作正常,但要求是使用逗号而不是斜杠.我们有什么方法可以在网址中使用带逗号分隔参数的web服务?
解决方法:
对我来说,用逗号分隔多个参数没有问题,即使它们是路径的一部分而不是查询参数.
我测试了它,它确实有效.
实际上,如果您不需要检查这些参数的正确性,您甚至可以直接绑定到int.我确实使用@PathVariable进行这些绑定.
@GET
@Produces("application/json")
@Path("{parameter1}/july/{param2},{param3},{param4}/month")
public Month getResult(@PathVariable("parameter1") String parameter1, @PathVariable("param2") int param2 , @PathVariable("param3") int param3, @PathVariable("param4") int param4) {
return action.getResult(parameter1, param2, param3,param3);
}
编辑:
至于我测试的代码,它是:
@Controller
public class InfoController {
@RequestMapping(method = RequestMethod.GET, value = "/seating/{param1},{param2},{param3}/month")
public String showMonthView(Model uiModel, @PathVariable("param1") int p1,
@PathVariable("param2") int p2, @PathVariable("param3") int p3,
HttpServletRequest httpServletRequest) {
LOG.debug(String.format("view:/seating/%d,%d,%d/month", p1, p2, p3));
uiModel.addAttribute("param1", p1);
uiModel.addAttribute("param2", p2);
uiModel.addAttribute("param3", p3);
return "month";
}
@ResponseBody
@RequestMapping(method = RequestMethod.GET, value = "/seating/{param1},{param2},{param3}/month", produces="application/json")
public Map<String, Integer> showMonthJson(@PathVariable("param1") final int p1,
@PathVariable("param2") final int p2, @PathVariable("param3") final int p3) {
LOG.debug(String.format("json:/seating/%d,%d,%d/month", p1, p2, p3));
Map<String, Integer> result = new HashMap<String, Integer>() {{
put("param1", p1);
put("param2", p2);
put("param3", p3);
}};
return result;
}
}
使用位于/seating/month.jsp的正确视图作为第一种方法.
或者,返回由3个参数组成的实体并生成json或xml也没有问题.
标签:restful-url,java,jax-rs,web-services 来源: https://codeday.me/bug/20191007/1867872.html