错误后的动态结果(列表或对象)
Dynamic result after error (List or Object)
这是我的第一个问题,我研究过但没有找到答案...
我目前正在使用 Resteasy 开发 REST Web 服务。它工作正常,但我开始怀疑:有一种方法可以 return 列表或对象 ?
让我举例说明:我有一个方法可以 return 在通过身份验证令牌后调用的 SECTORS 列表。
如果令牌没问题 - 它应该 return 扇区列表。
如果令牌不正确 - 它应该 return 一个错误,该错误映射到一个名为 ErroGenerico 的 class 对象。
我该怎么做? Return 对象还是列表?
创建自定义异常 ErroGenerico
并在令牌未验证时抛出它。
所以,方法:
public List<Something> getList(String token) throw ErroGenerico {
// do stuff
}
你可以试试下面的方法
//Not mandatory to create ListUser you can do without it oo just use arraylist directly
class ListUser extends ArrayList<User> {}
网络服务方法
@GET
@Path("getObj/{param}")
@Produces("application/json")
public Response getObj(@PathParam("param") String msg) {
ListUser responses = new ListUser();
responses.add(new User("1"));
responses.add(new User("2"));
responses.add(new User("3"));
if("list".equals(msg))
return Response.status(200).entity(responses).build();
User u=new User();
u.setName("Developer");
return Response.status(200).entity(u).build();
}
客户代码
Client client = ClientBuilder.newClient();
{
String url = "http://jerseyexample-ravikant.rhcloud.com/rest/jws/getObj/list";
System.out.println(url);
Response response = client.target(url).request().get();
ObjectMapper ob = new ObjectMapper();
Object pojos = response.readEntity(Object.class);
System.out.println(pojos.getClass());
if(pojos instanceof java.util.ArrayList){
ArrayList<User> list = (ArrayList) pojos;
for (Object pojo : list) {
User user = ob.convertValue(pojo, User.class);
System.out.println(user.getName());
}
}else{
System.out.println("user");
User user = ob.convertValue(pojos, User.class);
}
//System.out.println(response);
}
您可以在 http://jerseyexample-ravikant.rhcloud.com/rest/jws/getObj/list
查看工作服务
在这里你可以传递任何其他东西来获取对象而不是传递列表
除了这个答案,我还找到了这篇文章,它运行良好。
resteasy response
这是我的第一个问题,我研究过但没有找到答案...
我目前正在使用 Resteasy 开发 REST Web 服务。它工作正常,但我开始怀疑:有一种方法可以 return 列表或对象 ?
让我举例说明:我有一个方法可以 return 在通过身份验证令牌后调用的 SECTORS 列表。 如果令牌没问题 - 它应该 return 扇区列表。 如果令牌不正确 - 它应该 return 一个错误,该错误映射到一个名为 ErroGenerico 的 class 对象。
我该怎么做? Return 对象还是列表?
创建自定义异常 ErroGenerico
并在令牌未验证时抛出它。
所以,方法:
public List<Something> getList(String token) throw ErroGenerico {
// do stuff
}
你可以试试下面的方法
//Not mandatory to create ListUser you can do without it oo just use arraylist directly
class ListUser extends ArrayList<User> {}
网络服务方法
@GET
@Path("getObj/{param}")
@Produces("application/json")
public Response getObj(@PathParam("param") String msg) {
ListUser responses = new ListUser();
responses.add(new User("1"));
responses.add(new User("2"));
responses.add(new User("3"));
if("list".equals(msg))
return Response.status(200).entity(responses).build();
User u=new User();
u.setName("Developer");
return Response.status(200).entity(u).build();
}
客户代码
Client client = ClientBuilder.newClient();
{
String url = "http://jerseyexample-ravikant.rhcloud.com/rest/jws/getObj/list";
System.out.println(url);
Response response = client.target(url).request().get();
ObjectMapper ob = new ObjectMapper();
Object pojos = response.readEntity(Object.class);
System.out.println(pojos.getClass());
if(pojos instanceof java.util.ArrayList){
ArrayList<User> list = (ArrayList) pojos;
for (Object pojo : list) {
User user = ob.convertValue(pojo, User.class);
System.out.println(user.getName());
}
}else{
System.out.println("user");
User user = ob.convertValue(pojos, User.class);
}
//System.out.println(response);
}
您可以在 http://jerseyexample-ravikant.rhcloud.com/rest/jws/getObj/list
查看工作服务在这里你可以传递任何其他东西来获取对象而不是传递列表
除了这个答案,我还找到了这篇文章,它运行良好。
resteasy response