在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:!#
可以防止这种转移吗?
答案 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();
}
您可能需要优化正则表达式,不要包括" /"因为在路径参数之后有第二个路径段。