服务返回码的设计

服务的返回码指示服务正常返回结果或是执行出现异常。

最简单的设计

返回码只有两个:成功,服务正常返回;失败,服务执行出现异常。

实际情况下,返回码只有成功和失败可能不能满足需求。

程序异常的原因有很多种。

例如,服务消费者输入参数不合法、业务走不通、数据库无法访问、 网络不通等等。

服务消费者需要根据不同的返回码,向用户展示不同的提示信息。

例如,如果服务返回码指示输入参数不合法,服务消费者会根据每个返回码提示不同的信息;

如果服务返回码指示数据库无法访问、网络不通等基础设施异常,服务消费者为了隐藏非业务的细节,

会返回统一的提示信息 。

无结构的返回码设计

返回码字面上没有任何联系。

缺点:服务消费者需要分别处理每一个返回码。

可以优化的地方: 大部分返回码的处理逻辑都是一样的。

比如输入参数不合法, 处理逻辑都是将返回码转换成提示信息。

结构化的返回码设计

所有的返回码被组织成树形结构。

这样,服务消费者可以按返回码的类别来进行处理。

有含义的文本或数字?

使用有含义的文本表示返回码,还是使用数字表示返回码,是一个问题。

使用数字的优点是返回码短,效率高一点;但是开发人员需要依据数据字典解释每个数字码代表的意思。

使用有含义的文本的缺点是返回码任意长度;优点是开发人员看见返回码就能大概知道其含义。

Java实现(使用有含义的文本)

public class ServiceCode {

/**

* 成功

*/

public static final String SUCCESS = "S";

/**

* 异常

*/

public static final String ERROR = "E";

/**

* 返回码是否为异常码

*/

public static boolean isError(String code) {

return isError(code, ERROR);

}

/**

* 返回码是否属于某一类异常码

*/

public static boolean isError(String code, String error) {

return code.startsWith(error);

}

}

public class ListArticleServiceCode extends ServiceCode {

/**

* 参数异常

*/

public static final String E_PARA = ERROR + ".PARA";

/**

* 参数异常, 页数不能为空

*/

public static final String E_PARA_PAGE_EMPTY = E_PARA + ".PAGE_EMPTY";

/**

* 业务异常

*/

public static final String E_BIZ = ERROR + ".BIZ";

/**

* 基础设施异常

*/

public static final String E_INFRA = ERROR + ".INFRA";

/**

* 数据库异常

*/

public static final String E_INFRA_DB = E_INFRA + ".DB";

}

java 全局返回码设计_服务返回码的设计相关推荐

  1. 二维码简介_二维码基本概念_二维码基本原理

    一.二维码简介_二维码基本概念_二维码基本原理 1.二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Ba ...

  2. 谈谈对java中分层的理解_让我们谈谈网页设计中的卡片设计

    谈谈对java中分层的理解 "I want a card", this is the first demand point that the customer said in th ...

  3. 原码一位乘法器设计_对原码、反码和补码的加深理解

    我们知道计算机语言可以简单概括为三类,分别是机器语言.汇编语言和高级语言.机器语言是由二进制组成的编码,由无数个0和1组成.在二进制系统中,每个0或1就是一个位,而位是数据存储的最小单位,可称之为比特 ...

  4. [刘阳Java]_Web前端入门级练习_迅雷首页第一屏设计

    今天接着上一篇文章<Web前端入门级练习_迅雷官宣网设计>正式开始迅雷首页第一版的设计.如果完成,则最终的效果图如下 第一步:先完成logo部分的设计 logo设计,我们会使用CSS的定位 ...

  5. ios 动画设计_动画和讲故事在设计中的力量

    ios 动画设计 As human beings, we've always been fond of storytelling. Just think of campfire stories, Sa ...

  6. web登录界面设计_出色的Web界面设计的7条规则

    web登录界面设计 When you work on a website or on the design of web pages, remember that their success is n ...

  7. mysql关于菜单权限的设计_管理系统之权限的设计和实现

    本文主要想对前端权限管理功能实现做一个分享,所以并不会对后台管理的框架结构做太详细介绍,如果有朋友对其他有兴趣可以留言. 基本设计和分析 前端 vue + elementui 服务端: node + ...

  8. win32 c++源码大全_网站源码,服务器,域名三者是什么关系?

    一个完全的网站离不开三大件,分别是:网站源码,服务器,域名.服务器就是用来在后台存储网站数据并支撑运行的平台,当程序员把一个网站的源码写出来以后,需要先把源码上传到服务器,然后在服务器上绑定域名,并把 ...

  9. 时间轴ui设计_我应该在UI设计上花更多时间吗?

    时间轴ui设计 Let's start with an example of communication skills: they are important for any profession, ...

最新文章

  1. cocos2d-js动作的连续
  2. 查看总耗时_吉林德惠电力施工总承包资质代办
  3. InnoDB文件系统
  4. python网络爬虫学习笔记(三):urllib库的使用
  5. 测试用例--因果图、判定表法
  6. Android平台开发职位招聘要求总结
  7. CS231n李飞飞计算机视觉 循环神经网络
  8. AI语音声控智能按摩椅方案/案列/APP/小程序/网站
  9. 网络媒体教程:人物素描
  10. ARM Cortex 详解
  11. 【论文翻译】Semantic Relation Reasoning for Shot-Stable Few-Shot Object Detection
  12. LL(1)分析法(C++实现)
  13. 运维简历怎么写项目描述_职场小白怎么写简历?一份好简历=成功一半
  14. nasm预处理器(1)
  15. WXML和HTML的区别
  16. 原生html+css实现五星好评
  17. target is not existed: .page-component__scroll .el-scrollbar__wrap
  18. 寻根究底,探讨 chi -square特征词选择方法后面的数学支持
  19. 如何去除电镀废水中的铬、镍、铜
  20. 微商助理 防伪防窜货溯源代理授权查询系统源码

热门文章

  1. 举例 微积分 拉格朗日方程_变量数学时代——微积分的发明
  2. 播客“日谈公园”完成数百万天使轮融资,来自头头是道基金
  3. 光电技术加持,这款望远镜可以看见外太空
  4. JavaScript正则式练习
  5. java web开发中会遇到的异步执行方案
  6. Linux强制重新启动系统——重启服务器的最终救济途径
  7. 第76节:Java中的基础知识
  8. python+Django框架运用(一)
  9. canvas合成海报所遇问题及解决方案总结
  10. (翻译) Android ListView 性能优化指南