是否可以获得可变数量的路径深度?
路径示例:
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>
答案 0 :(得分:0)
如果您不需要信息包含在url路径中(您的示例代码似乎只是想将图像路径放入字符串中),则可以使用@QueryParam
获得所需的信息。 :
@GET
@Path("/image")
public Response getImage(@QueryParam("imagepath") String image) {
...
}
通过“ ... / images / image?imagepath = ...”调用端点。另外,我没有测试它,您可能必须转义正斜杠(也许在客户端使用%2F
或使用URLEncoder.encode(url, "UTF-8")
)。
但是,如果我误解了您的用例,而您确实想要可变路径,那将是不可能的。在这种情况下,也许您应该每个零件使用一个端点。