我是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列表,并将分隔符作为逗号。
有没有办法将参数作为列表获取,而不是从我这边手动执行?或者是否有可以用自动方式执行此操作的库?
由于
答案 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应该标识一个唯一的资源(在这种情况下是产品),它应该是无状态的。