Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在rest服务中请求多个资源_Java_Rest - Fatal编程技术网

Java 如何在rest服务中请求多个资源

Java 如何在rest服务中请求多个资源,java,rest,Java,Rest,我是RESTfulWeb服务的新手,需要一些帮助。我有一个服务,它将返回一个产品列表。URL如下所示: /example/product/6666,6667?expand=sellers&storeIds=2,1 要定义此服务,我有以下接口: @Path("/example") public interface Service { @GET @Path("/products/{pIds}") @Produces( "application/json" )

我是RESTfulWeb服务的新手,需要一些帮助。我有一个服务,它将返回一个产品列表。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;
}
@Path(“/示例”)
公共接口服务{
@得到
@路径(“/products/{pIds}”)
@生成(“应用程序/json”)
公共服务响应产品(
@PathParam(“pIds”)字符串PRODUCTSID,
@QueryParam(“展开”)字符串展开,
@QueryParam(“StoreId”)字符串(StoreId)引发异常;
}
这里我假设我将
productsIds
作为一个字符串,并且需要手动将该字符串拆分为一个ID列表,以分隔符作为逗号

是否有一种方法可以代替以列表的形式获取参数,而不是从我这边手动执行?或者是否有一个库,我可以使用它来自动完成这项工作


谢谢

您可以将产品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;
}
@Path(“/示例”)
公共接口服务{
@得到
@路径(“/products/{pIds}”)
@生成(“应用程序/json”)
公共服务响应产品(
@PathParam(“pIds”)列出产品SID,
@QueryParam(“展开”)字符串展开,
@QueryParam(“StoreId”)字符串(StoreId)引发异常;
}
字符串PRODUCTSID
更改为
列表PRODUCTSID


另一方面,我建议将产品id作为查询参数传入。您的URI应该标识一个唯一的资源(在本例中为产品),并且应该是无状态的。

谢谢您的回答,但我的问题是pathparam如何知道逗号是分隔符,以及path param如何解组请求..?在这种情况下,逗号是JAX-RS的标准分隔符。JAX-RS提供程序是将数据反序列化到列表中的提供程序。如果我想添加“u”或“:”作为我的定界符..?我们如何向JAX-RS指定这是我的新定界符..?AFAIK,没有办法覆盖使用的定界符。如果您真的想使用自定义分隔符,我建议您序列化为字符串,然后在您的code.ya中使用
String.split()
,这是我最初的想法…非常感谢您提供的信息…这真的很有帮助…:)