REST代表表现层状态转移(representational state transfer)。REST用来描述客户端通过某种形式获取服务器的数据,这些数据资源的格式通常是JSON或XML。同时,这些资源的表现或资源的集合是可以修改的,伴随着行为和关系可以通过多媒体来发现。在我看来,一种简单的理解就是:在设计API时,使用路径定位资源,方法定义操作,通过Content-Type和Accept来协商资源的类型。REST也有一些限制:
- REST是无状态的,请求之间没有持久的会话信息
- 响应需要声明成可缓存的
- REST关注一致性,如果使用HTTP,需要尽可能使用HTTP的特性,而不是去发明新的公约
- 这些限制允许REST架构的API更加稳定。
RPC是跨语言跨平台的服务调用,不仅是C-S或者前后端之间的通信。一个完善的RPC框架还包含代码生成,通信的规范等等。在实际使用中,以前后端开发为例,前端传递一个方法名和参数给后端,后端执行对应的方法,并给该方法传递对应的参数,最后将执行的结果传递给前端。使用RPC我们可以像调用本地服务(方法)一样调用服务器的服务(方法)。
REST使用HTTP的方法,例如:GET,POST,PUT,DELETE,OPTIONS还有比较不常用的PATCH方法。
RPC通常只会使用GET和POST方法,GET方法通常用来获取信息,POST方法可以用来进行所有的行为。
RPC是以动词为中心的, REST是以名词为中心的, 此处的 动词指的是一些方法, 名词是指资源