编程语言
首页 > 编程语言> > java – 如何在url中为逗号分隔的参数传递休息服务的get方法

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