RESTful API就是REST风格的API。
使用场景:前端接收到的用户请求统一由一个后台来处理并返回给不同的前端肯定是最科学和最经济的方式,RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式。
理解:RESTful API由后台也就是SERVER来提供前端来调用。前端调用API向后台发起HTTP请求,后台响应请求将处理结果反馈给前端。也就是说RESTful 是典型的基于HTTP的协议。
设计原则和规范
- 资源。JSON是现在最常用的资源表现形式。
- 统一接口。RESTful风格的数据元操CRUD(create,read,update,delete)分别对应HTTP方法:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源,这样就统一了数据操作的接口。
- URI。可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。一般的,每个资源至少有一个URI与之对应,最典型的URI就是URL。
- 无状态。由一个URL与之对应可以通过HTTP中的GET方法得到资源,这就是典型的RESTful风格。
RESTful的使用:
GET:http://www.xxx.com/source/id 获取指定ID的某一类资源。
例如GET:http://www.xxx.com/friends/123 表示获取ID为123的会员的好友列表。如果不加id就表示获取所有会员的好友列表。POST:http://www.xxx.com/source/id 表示新建指定ID的某一类资源。
例如POST:http://www.xxx.com/friends/123 表示为指定ID为123的会员新增好友。
REST和RPC的区别
Rest:严格的说接口很规范,操作对象即为资源,对资源的四种操作(post、get、put、delete),并且参数都放在URL上。不严格的说Http+json、Http+xml,常见的http api都可以称为Rest接口。
RPC:常说的远程方法调用,就是像调用本地方法一样调用远程方法,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC通常基于TCP实现,常用框架例如dubbo,netty、mina、thrift。
PC风格,可能会这样写:
1 | /queryOrder?orderId=123 |
用Restful风格:
1 | Get |
2 | /order?orderId=123 |
RPC是面向过程,Restful是面向资源,并且使用了Http动词。从这个维度上看,Restful风格的url在表述的精简性、可读性上都要更好。
RPC的好处
RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。
如果没有统一的服务框架—RPC框架,各个团队的服务提供方就需要各自实现一套序列化、反序列化、网络框架、连接池、收发线程、超时处理、状态机等“业务之外”的重复技术劳动,造成整体的低效。所以,统一RPC框架把上述“业务之外”的技术劳动统一处理,是服务化首要解决的问题