《前言》

(一) Winner2.0 框架基础分析

(二)PLSQL报表系统

(三)SSO单点登录

(四) 短信中心与消息中心

(五)钱包系统

(六)GPU支付中心

(七)权限系统

(八)监控系统

(九)会员中心

(十) APP版本控制系统

(十一)Winner前端框架与RPC接口规范讲解

(十二)上层应用案例

(十三)总结

《RPC接口使用规范》

不知道啥时候开始好像一下子都流行叫“RPC”了。之前我们都叫“API”的,为此我特地百度了一下才知道原来:

API(Application Programming Interface,应用程序编程接口)

RPC(Remote Procedure Call),远程过程调用)

这样一看确实叫RPC更合适一下,细致讲一下我们Winner2.0中接口请求规范,我们从简到繁的说一下演变过程(以下就简称RPC)。

首先在1.0时代,我们当时也没有很多思路,只做了简单签名验证也没有考虑权限、版本等问题,主要是用WebService。

我们看一下常规情况我们是这么用的:

我们的目的是为了防止WebService 接口被恶意调用,尤其是篡改数据后调用所以用了两种手段做安全验证:

1,使用RSA对参数加密(RSA是非对称加密,公钥加密私钥解密,一般使用两对RSA)。

2,使用MD5做签名验证(客户端与服务端约定一个字符串做加密种子,将所有参数+加密种子 算出来唯一的md5值)

这样做基本对于安全性而言已经够了,但是在使用过程中五六年下来总是觉得用着不顺手。大致几点如下:

A,接口没有权限管制。比如我们一个接口同时有A、B两个项目调用,这个时候我想停止给B项目使用,接口就没有控制权。

这种情况经常出现在给第三方调用时候,我们不想给第三方使用了,这个时候又关不掉,关掉了我们自己的项目也用不了了。

B,我们这样写接口没有版本的概念。同样以第三方调用我们的接口来举例,如果我们升级项目更改了参数,所有的第三方就开始

骂娘了,每个第三方客户端都要去升级系统,而且我们一刀切调用不见得有时间来配合我们升级。有版本号的话,我们可以让老用户

依然可以继续使用,新接入的就使用最新的接口。

C,对于移动客户端没有管理概念。 这个属于特殊的业务,我们公司的硬件终端如果我想限制某一台终端调用,之前的做法是不行的。

D:参数过多时代码繁琐。 如果9个参数,客户端就要给8个参数依次加密,当然可以写工具类处理,但还是繁琐了。

F:没有统一的Json返回参数规范。每个项目都是自己定义返回结果,没有规范。客户端开发时没有规律可循。

另外还有一些小问题,但最主要的就这几点,所以我们在Winner2.0中我们商量出了一套标准,所有的接口基于这套标准开发。

首先,得益于MVC的到来,我们基本放弃了使用Webservice这种方式提供接口,转而使用WebAPI的形式。

其次,我们接口只接收三个固定参数:商户号,Json数据,签名字符串。

最后,我们统一了返回Json的数据标准,以及错误编码。

这里我贴一张Jason 写的接口文档中的接口API协议:

公共参数就是所有接口都需要接收这些基本的参数,再一个子Json才是具体的传值参数。 这段Json用商户号对应的MD5种子

加密,主要也省去了每个参数客户端单独加密,服务端又单独解密的繁琐。

与此同时,我们还需要上送客户端的硬件id,会用的信息,商户信息等。主要就在服务端能做更细致的控制。

差不多就说道这里吧,有兴趣一起探讨Winner框架的可以加我们QQ群:261083244。或者扫描左侧二维码加群。

程序员的自我救赎---11.1:RPC接口使用规范的更多相关文章

  1. 程序员的自我救赎---11.3:WinService服务

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  2. 程序员的自我救赎---11.4:FileSystem文件服务

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  3. 程序员的自我救赎---1.4.2: 核心框架讲解(BLL&Tool)

    <前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限 ...

  4. 程序员的自我救赎---3.1:理解Oauth2.0

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  5. 程序员的自我救赎---1.4.1:核心框架讲解(DAL)

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  6. 程序员的自我救赎---12.2.3: 虚拟币交易平台(区块链) 下 【C#与以太坊通讯】

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  7. 程序员的自我救赎---3.2:SSO及应用案例

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  8. 程序员的自我救赎---1.4.3: 核心框架讲解(MVC)

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  9. 程序员的自我救赎---10.1:APP版本控制系统

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

随机推荐

  1. webpack之前端性能优化(史上最全,不断更新中。。。)

    最近在用webpack优化首屏加载性能,通过几种插件之后我们上线前后的速度快了一倍,在此就简单的分享下吧,先上个优化前后首屏渲染的对比图. 可以看到总下载时间从3800ms缩短到1600ms. 我们在 ...

  2. java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to...异常

    异常: Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot ...

  3. spring框架的一些技术总结

    纵观现在互联网行业,java的地位依然不可动摇,因为java拥有着的众多开发人员和适用性广,技术与解决技术大部分开源等特点,因此java依然是众多众多开发行业作为互联网开发的首选,而说到开发,我们就不 ...

  4. ACM HDU 1559 最大子矩阵

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1559 这道题 挺好的,当时想出解法的时候已经比较迟了.还是平时看得少. 把行与列都进行压缩.ans[i ...

  5. memcached subList序列化问题

    某个业务场景需要将list超过10个元素时截取前10个然后再丢memcached缓存,因此写了这么一行代码 if(list.size()>10){ list=list.subList(0, 10 ...

  6. C++map类型 之 简单介绍

    一:map的前世今生 (1)从关联容器与顺序容器说起.关联容器通过键(key)存储和读取元素.而顺序容器则通过元素在容器中的位置顺序存储和訪问元素(vector,queue,stack,list等). ...

  7. 基于QT的异质链表实例

    所谓的异质链表就是的节点元素类型能够不同.本实例採用C++抽象类和多态实现. #include <QApplication> #include<QPushButton> #in ...

  8. Swift开发教程--使用Storyboard进行界面跳转

    使用storyboard结合代码来做确实能够给开发带来非常多的便利. 在实践的过程中,我们常常会遇到界面的跳转问题. 通过控件和界面的建立的"连接"就能够了. 假设是navigat ...

  9. [基础规范]JavaBeans规范

    本文来自维基百科:http://en.wikipedia.org/wiki/JavaBeans#JavaBean_conventions JavaBeans是Java语言中能够反复使用的软件组件,它们 ...

  10. Android自己定义组件之日历控件-精美日历实现(内容、样式可扩展)

    需求 我们知道.Android系统本身有自带的日历控件,网络上也有非常多开源的日历控件资源.可是这些日历控件往往样式较单一.API较多.不易于在实际项目中扩展并实现出符合详细样式风格的,内容可定制的效 ...