如何在休息服务中请求多个资源

时间:2013-01-28 19:58:28

标签: java rest

我是RESTful Web服务的新手,需要一些帮助。我有服务,将返回产品列表。 URL如下所示:

/example/product/6666,6667?expand=sellers&storeIds=2,1

要定义此服务,我有这个界面:

@Path("/example")
public interface Service {
    @GET
    @Path("/products/{pIds}")
    @Produces( "application/json" )
    public ServiceResponse<ProductsList> getProducts(
        @PathParam("pIds") String productsIds,
        @QueryParam("expand") String expand,
        @QueryParam("storeIds") String storeIds) throws Exception;
}

我在这里假设我将productsIds作为一个字符串,我需要手动将此字符串拆分为一个id列表,并将分隔符作为逗号。

有没有办法将参数作为列表获取,而不是从我这边手动执行?或者是否有可以用自动方式执行此操作的库?

由于

1 个答案:

答案 0 :(得分:0)

您可以将产品ID直接反序列化到列表中,并对服务定义进行一些细微更改。试试这个:

@Path("/example")
public interface Service {
    @GET
    @Path("/products/{pIds}")
    @Produces( "application/json" )
    public ServiceResponse<ProductsList> getProducts(
        @PathParam("pIds") List<String> productsIds,
        @QueryParam("expand") String expand,
        @QueryParam("storeIds") String storeIds) throws Exception;
}

String productsIds更改为List<String> productsIds

另外,我建议将产品ID作为查询参数传递。您的URI应该标识一个唯一的资源(在这种情况下是产品),它应该是无状态的。