错误后的动态结果(列表或对象)

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