rpc 跟 restful 之间有什么关系 ?
目前的项目是前后端分离,后端用 springmvc,前端用 vue,基于 http 交互。
后端接口定义的格式 像 rpc 风格 比如:getUserInfo,queryStoreCouponList
疑问的地方:
- 像这种前后端分离的结构属于 restful 还是 rpc 还是 都不属于?
- rpc 跟 restful 之间有什么关系、区别?
求各位老哥解答
目前的项目是前后端分离,后端用 springmvc,前端用 vue,基于 http 交互。
后端接口定义的格式 像 rpc 风格 比如:getUserInfo,queryStoreCouponList
疑问的地方:
求各位老哥解答
我印象最深刻的,是这里面 易哥 的回答
RPC 全程是 Remote Procedure Call,中文可以翻译成远程过程调用,所以只要是一个程序里像调用自己的过程一样去调用另外一个程序里的过程(可能是同一台机器上的,也可能是不同机器上的),那么就可以被称之为 RPC 技术。
REST 是一中 API 设计风格(不是标准,不是标准,不是标准),这种风格是 Roy Fielding 博士于 2000 年发布的论文里提出的,用于解决一些 API 设计问题的风格,感兴趣可以看一看论文原文,篇幅很短。
REST 是基于 HTTP 来设计的,HTTP 是超文本传输协议,用于实现客户端(浏览器)与服务端之间的数据通信。
假设你的 VUE 页面以 REST 风格通过 HTTP 这个协议来与服务端的 SpringMVC 程序进行通信,同时 VUE 页面中将这个通信过程封装成了本地的方法,能实现页面业务逻辑可以直接调用本地方法,最终实现与服务器的数据交换;那么就可以说:
– 这个可以用于与服务器交换数据的方法是一种 RPC 技术。
– 此 RPC 技术底层使用 REST 风格的 HTTP API 来实现。
RPC 、REST 、前后端分离,三者之间没有任何联系,不互相依赖,也可以共存。就好比是车辆、汽油发动机、出行三者的关系;车辆可以用汽油发动机,也可用柴油发动机甚至电动机;汽油发动机可以给汽车用,也可以给船和发电机用;出行可以选择乘车,也可以选择乘船和飞机甚至自行车。
RPC 和 REST,一个是针对调用的方式,另一个是针对通信方式,分别看。
RPC 的精髓是,业务逻辑不需要关心本地的这个方法是如何实现和服务器通信的,本质上是对调用过程的一种封装,这样业务逻辑只需要关心自己的业务逻辑,RPC 只需要关心如何实现远程调用,两者隔离。
REST 只是一种 API 的设计风格,只要你服务端的 API 风格符合 REST 的特征,那就算是用了 REST 风格。
所以你搞清楚了之后可以自己判断一下,你现在是否在用 RPC 以及 REST 。
不过我觉得你目前的思路是本末倒置的。不应该是先做完了一个设计再回过头来看做法是不是符合某种技术的特征;而是应该先分析需求,然后为了更科学地实现需求,根据不同技术的特征来选择其中最合适的来实现。