somebody_hjh 2012-09-20 15:51
浏览 387
已采纳

提供给外部调用的接口设计有哪些原则和技巧?

提供给外部调用的接口设计有哪些原则和技巧?

有几个问题一直想问:

1、远程接口是应该抛出异常,还是封装返回值?
2、接口需不需要容错处理,还是交给调用方容错。
3、接口升级的考虑,怎么做到客户端容易升级?序列化的容错?
4、对读写分离接口的理解,如readService和writeService。为什么有接口这么区分
5、参数Map还是类比较好?
6、参数是常量还是enum比较好?

  • 写回答

1条回答 默认 最新

  • jinnianshilongnian 2012-09-20 19:21
    关注

    1、如果提供给内部其他应用使用
    1、远程接口是应该抛出异常,还是封装返回值? 抛出异常最好,这样客户可以查看javadoc更加容易的来处理错误,而不需要ifelse判断返回值;
    2、接口需不需要容错处理,还是交给调用方容错。 采用断言定义前置条件(如果前提不满足直接抛出异常给客户 告诉客户参数有误) 一定的容错还是需要的;
    3、接口升级的考虑,怎么做到客户端容易升级?序列化的容错? 必须向后兼容,不采用java的序列号,而采用语言/平台无关的文本方式如JSON、XML交互数据;跨平台 跨语言;
    4、对读写分离接口的理解,如readService和writeService。为什么有接口这么区分:这个不一定这么分 而是要根据需求不同定义接口 不要定义大而全的接口
    5、参数Map还是类比较好? 当然类更好 可以考虑 JSON-->类的转换工具;
    6、参数是常量还是enum比较好? enum更好 更安全 而且表达能力更强;

    2、提供给第三方应用使用,比如通过http协议暴露
    1、远程接口是应该抛出异常,还是封装返回值? 封装返回值,因为可能是不同平台调用
    3、接口升级的考虑,怎么做到客户端容易升级?序列化的容错? 采用语言/平台无关的文本方式如JSON、XML交互数据;跨平台 跨语言;
    5和6可以利用一些工具自动进行Mapping

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services