rpc - 接口返回数据结构的设计
方案一:
系统级状态 、业务级别的状态同用 code
要特殊声明保留状态,如若不声明保留状态,一旦业务开发人员用到了系统级的状态,就有必要侵入的改动业务返回的code(新code与业务欲返回的code不一样,不好调试),不是很好
// --- 系统级状态 ---
{
'code' : 20000,
'message' : '系统没有出错、登录检查过了、权限检查过了、业务执行正常',
'data' : {
}
} {
'code' : 20001,
'message' : '系统出错-对业务的开发人员要声明保留',
'data' : {
}
} {
'code' : 20002,
'message' : '登录检查没有过-对业务的开发人员要声明保留',
'data' : {
'jumpUrl' : 'http://passport.baidu.com/'
}
} {
'code' : 20003,
'message' : '权限检查没有过-对业务的开发人员要声明保留',
'data' : { }
} // --- 业务级状态 ---
{
'code' : 20004,
'message' : '业务1出错',
'data' : { }
} {
'code' : 20005,
'message' : '业务2出错',
'data' : { }
}
方案二: (更偏向此种)
系统级状态 、业务级别的状态拆开 code.data.code(无需特殊声明)
无需特殊声明保留状态,不会带来侵入修改的问题
// -------- 系统级状态 --------------
{
'code' : 200,
'message' : '系统没有出错、登录检查过了、权限检查过了',
'data' : {
}
} {
'code' : 201,
'message' : '系统出错',
'data' : {
}
} {
'code' : 202,
'message' : '登录检查没有过',
'data' : {
'jumpUrl' : 'http://passport.baidu.com/'
}
} {
'code' : 203,
'message' : '权限检查没有过',
'data' : { }
} // -------- 业务级状态 --------------
{
'code' : 200,
'message' : '系统没有出错、登录检查过了、权限检查过了',
'data' : {
'code' : '201'
'message' : '业务1出错'
}
} {
'code' : 200,
'message' : '系统没有出错、登录检查过了、权限检查过了',
'data' : {
'code' : '201'
'message' : '业务2出错'
}
}
rpc - 接口返回数据结构的设计的更多相关文章
- 谈谈RPC中的异步调用设计
RPC(远过程调用)在分布式系统中是很常用的基础通讯手段,核心思想是将不同进程之间的通讯抽象为函数调用,基本的过程是调用端通过将参数序列化到流中并发送给服务端,服务端从流中反序列化出参数并完成实际的处 ...
- [JAVA设计模式]第一部分:接口、抽象类、设计原则
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- carry-检查数据接口返回数据合法性
问题背景: 在测试&部署监控过程中,我们常常会遇到外部接口返回数据不靠谱的时候.最常见的场合是从某个http获取如json和xml等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型 ...
- RPC接口mock测试
转载:http://blog.csdn.net/ronghuanye/article/details/71124127 1 简介 Dubbo目前的应用已经越来越广泛.或者基于Dubbo二 ...
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...
- 用javascript向一个网页连接接口发送请求,并接收该接口返回的json串
一般前端与后端的互交都是通过json字符串来互交的,我的理解就是与网页接口的来回数据传递采用的数据结构就是json.一般是这样. 比如后端的代码是这样的: @RequestMapping(value ...
- 业务接口+UI层的设计(基于Castle实现的Repository)
业务接口+UI层的设计(基于Castle实现的Repository) Repository层设计的文章见:[http://www.cnblogs.com/yomho/p/3297042.html] ...
- 搭建rtmp直播流服务之3:java开发ffmpeg实现rtsp转rtmp并实现ffmpeg命令的接口化管理架构设计及代码实现
上一篇文章简单介绍了java如何调用ffmpeg的命令:http://blog.csdn.net/eguid_1/article/details/51777716 上上一篇介绍了nginx-rtmp服 ...
- 程序员的自我救赎---11.1:RPC接口使用规范
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
随机推荐
- LeetCode 046 Permutations 全排列
Given a collection of distinct numbers, return all possible permutations.For example,[1,2,3] have th ...
- hdu3949(线性基,求第k小的异或和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 XOR Time Limit: 2000/1000 MS (Java/Others) Me ...
- zk小结
一 ZooKeeper功能 1.文件系统 2.通知机制 二 Zookeeper文件系统 每个子目录项都被称作为znode,和文件系统一样,我们能够自由的增加.删除znode,在一个znode下增加.删 ...
- eclipse配置android开发环境并搭建第一个helloWord工程
一.搭建Android在eclipse下环境 一.JDK(不用安装 下载地址: http://www.xp510.com/xiazai/Application/program/23625.ht ...
- devExpress GridControl gridView笔记
gridView1.Appearance.EvenRow.BackColor = Color.FromArgb(, , , ); gridView1.Appearance.OddRow.BackCol ...
- Hibernate基础案例1
使用到的是MySQL数据库 1.在项目中先引入jar包,并添加引用 <dependencies> <dependency> <groupId>junit</g ...
- [Freemarker] Getting Start
Freemarker是一个模板引擎,在.NET中有类似的T4模板,FreeMarker对ASP.NET MVC也很友好,链接地址,引用官方的一幅图 模板+数据=视图 Following are the ...
- mysql用户常见操作
一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...
- SVG矢量图【转】
var iconArray=[ //'circle', //实心圆 //'rect', //矩形 //'roundRect', //圆角矩形 //'triangle', //三角形 //'diamon ...
- sql server 搭建发布订阅后,改端口不正常工作的问题
sql 的发布订阅,想必大家都了解,但一般都是在默认的1433的情况下搭建的,那么1433换成别的端口,发布还能正常工作吗? 在一次客户的真实场景上我就遇到了. 好了,今天不想写太多,简化下, 测试环 ...