我将以下代码作为我的宁静服务操作。

    @GET
    @UnitOfWork
    @Timed(name = "get-requests")
    @Path("/{referenceId}")
    public Response get(@Auth @ApiParam(access = "internal") UserPrincipal user,
            @ApiParam(name = "id", value = "reference ID", required = true)
            @PathParam("referenceId") String id) {
         return Response.ok(id).build();
    }

但是,我注意到如果传递m1234;5678,我只会得到m1234返回。我尝试了@Path("/{referenceId:.*}"),但是没有用。
我还尝试在该方法的顶部使用@Encode来确保未解码该url,然后尝试将%3B替换为“;”在代码中。但它似乎也不起作用。

请注意,我不能使用Spring框架。谢谢。

最佳答案

;表示矩阵参数。使用 @MatrixParam 获得其值。

另请参见以下问题的答案:URL matrix parameters vs. request parameters

编辑:矩阵参数的键为5678,值为null

有一种方法可以通过使用 PathSegment 而不是String作为参数的类型来实现所需的目标:

@PathParam("referenceId) PathSegment id

在方法的主体中,您可以使用
String idValue = id.getPath();

得到m1234;5678

07-27 23:17