在REST中请求@pathParam时,在分号后截断URL

时间:2016-12-21 14:45:08

标签: java rest jersey

在javascript中我编码路径并附加到URL。在GET调用中,REST URL在分号后被截断。

  

路径名称:!#; @ $ ^&()_ + {}:,。' []

     

encodeURI(路径名):   %21%23%3B%40%24%5E%26%28%29_%2B%7B%7D%3A%2C。%27%5B%5D

     

网址+路径:   ../reports/SMC-%21%23%3B%40%24%5E%26%28%29_%2B%7B%7D%3A%2C.%27%5B%5D/configs?_=1482329220060

@GET
    @Path("/{report_name}/configs")
    @Produces({ MediaType.APPLICATION_JSON })
    @ApiOperation(value = "Fetches the configurations of the report",httpMethod = HttpMethod.GET, response = ReportConfigOptions.class)
    public Response getAllConfigOptions(@PathParam("report_name") String fqReportName,
            @QueryParam("context_parameters") ReportContextParameters contextParameters,
            @QueryParam("apply_locale") boolean applyLocale) {
@PathParam("report_name") String fqReportName 
....

fqReportName 将在分号(;)后转换 fqReportName:!#

可以防止这种转移吗?

1 个答案:

答案 0 :(得分:0)

问题在于jersy正在考虑;作为矩阵参数指示。 看到这个答案: How can I map semicolon-separated PathParams in Jersey?

编辑:

这对我有用:

@GET
@Path("s/{s: .*}")
@Produces("application/json")
public Response s(@PathParam("s") String s){
    return Response.ok(s).build();

}

您可能需要优化正则表达式,不要包括" /"因为在路径参数之后有第二个路径段。