JAX-RS可变路径深度

时间:2019-06-14 17:38:04

标签: java jax-rs

是否可以获得可变数量的路径深度?

路径示例:

  • https://www.example.com/rest/images/part1/part2/part3/image.jpg
  • https://www.example.com/rest/images/part1/part2/image.jpg
  • https://www.example.com/rest/images/part1/image.jpg

代码示例:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

@Path("/image")
@Produces("image/*")
@Consumes("image/*")
public class ImageResource {

    @GET
    @Path("/{image}")
    public Response getImage(@PathParam("image") String image) {
        ...
    }
}

我主要使用两个Maven依赖项:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.4</version>
</dependency>

1 个答案:

答案 0 :(得分:0)

如果您不需要信息包含在url路径中(您的示例代码似乎只是想将图像路径放入字符串中),则可以使用@QueryParam获得所需的信息。 :

@GET
@Path("/image")
public Response getImage(@QueryParam("imagepath") String image) {
    ...
}

通过“ ... / images / image?imagepath = ...”调用端点。另外,我没有测试它,您可能必须转义正斜杠(也许在客户端使用%2F或使用URLEncoder.encode(url, "UTF-8"))。

但是,如果我误解了您的用例,而您确实想要可变路径,那将是不可能的。在这种情况下,也许您应该每个零件使用一个端点。