hkliya 2009-07-03 10:14
浏览 210
已采纳

接口设计问题

比如设计一个“用户查询”的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
在客户端强制转换一下类型就可以

  • 写回答

3条回答 默认 最新

  • joy_gw 2009-07-03 10:49
    关注

    接口方法定义如下:

    public QueryUserRsp getUsers(int[] userId, int[] groupId)

    QueryUserRsp :结果对象(包括 查询的User对象,还有操作码,或操作信息)

    public class QueryUserRsp
    {
    private ParamType[] paramType; // 拓展信息 该对象 两个成功变量(key,Vale)

    private int returnCode; // 返回码,标识成功或失败
    
    private java.lang.String returnMsg; // 返回操作信息
    

    }

    提供参考

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码