gpt4 book ai didi

arrays - 使用 get 将列表或数组传递给 RESTeasy

转载 作者:行者123 更新时间:2023-12-04 14:40:24 24 4
gpt4 key购买 nike

我在各种示例中看到过这种情况,这些示例展示了如何创建将数组或对象列表作为 URL 一部分的 REST 服务。

我的问题是,如何使用 RESTeasy 实现它?类似下面的内容将是我假设它的工作方式。

   @GET
@Path("/stuff/")
@Produces("application/json")
public StuffResponse getStuffByThings(
@QueryParam("things") List<Thing> things);

最佳答案

创建一个 StringConverter并使用包装器对象。这是一个快速而肮脏的例子:

public class QueryParamAsListTest {
public static class Thing {
String value;
Thing(String value){ this.value = value; }
}

public static class ManyThings {
List<Thing> things = new ArrayList<Thing>();

ManyThings(String values){
for(String value : values.split(",")){
things.add(new Thing(value));
}
}
}

static class Converter implements StringConverter<ManyThings> {

public ManyThings fromString(String str) {
return new ManyThings(str);
}

public String toString(ManyThings value) {
//TODO: implement
return value.toString();
}

}

@Path("/")
public static class Service {
@GET
@Path("/stuff/")
public int getStuffByThings(
@QueryParam("things") ManyThings things){

return things.things.size();
}
}



@Test
public void test() throws Exception {
Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
dispatcher.getProviderFactory().addStringConverter(new Converter());
dispatcher.getRegistry().addSingletonResource(new Service());

MockHttpRequest request = MockHttpRequest.get("/stuff?things=a,b,c");
MockHttpResponse response = new MockHttpResponse();

dispatcher.invoke(request, response);

Assert.assertEquals("3", response.getContentAsString());


}
}

我想你也可以使用 StringParamUnmarshaller

关于arrays - 使用 get 将列表或数组传递给 RESTeasy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com