比如设计一个“用户查询”的webservice接口,有两种方式:
[code="java"]class User {
int id;
int groupId;
String name;
......
}
1.
public String getUsers(int userId, int groupId);
// 用这种方法可以返回一些错误信息,比如用户权限不够,参数错误,group不存在等等
// 缺点是只能将User对象的属性拼成字符串,客户端得到后要自己解析字符串得到对象
2.
public User[] getUsers(int userId, int groupId);
// 这种方法的缺点是只能得到两种结果,一是有数据,一是没有数据
// 如果没有得到数据,客户端很难判断是哪里出了问题,不好调试
[/code]
请各位帮忙分析一下,比较好的做法是什么?
或者我想的都是错的,请指出正确的方法...
[b]问题补充:[/b]
一楼的意思明白了,我现在再写一个类
[code="java"]public class UserResponse {
private String message;
private User[] users;
...
}
//接口改成:
public UserResponse getUsers();
//这样就即可以得到错误消息又可以得到User对象的结果了[/code]
再补充一个问题:
我现在有几个类似User这样的类,每个都得这样再写一个XXXResponse类封装
一下才可以,有没有更简单的办法可以不用为每个类写一个XXXResponse?
[b]问题补充:[/b]
有更好的方案了,返回Object[]
obj[0] = "错误提示";
obj[1] = new User[]{...};
这样就不用给每个类封装一个xxxResponse
在客户端强制转换一下类型就可以