以下链接是比较通俗易懂...可以不看本文了
REST,以及RESTful的讲解:https://blog.csdn.net/qq_21383435/article/details/80032375
如何给老婆解释什么是RESTful:https://zhuanlan.zhihu.com/p/30396391?group_id=937244108725641216
REST简介:https://www.cnblogs.com/loveis715/p/4669091.html
RESTful认证机制:https://www.cnblogs.com/chinajava/p/5871305.html
一、普通http api与 RESTful api的区别
1、请求方式
一般我们设计接口 就只会使用 post 和 get 方法
restfull api 教我们设计接口的时候 一定要 适当的使用 put 和delete 方法。
2、URL写法
在Restful之前的操作:
http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据
http://127.0.0.1/user/save POST 新增用户
http://127.0.0.1/user/update POST 修改用户信息
http://127.0.0.1/user/delete GET/POST 删除用户信息
RESTful用法:
http://127.0.0.1/user/1 GET 根据用户id查询用户数据
http://127.0.0.1/user POST 新增用户
http://127.0.0.1/user PUT 修改用户信息
http://127.0.0.1/user DELETE 删除用户信息
3、资源获取方式
普通http api:
资源路径在前端已写死,下一步操作的信息已在html、js中写死
RESTful api:
客户只可以通过服务端所返回各结果中所包含的信息来得到下一步操作所需要的信息,如到底是向哪个URL发送请求等。也就是说,一个典型的REST服务不需要额外的文档标示通过哪些URL访问特定类型的资源,而是通过服务端返回的响应来标示到底能在该资源上执行什么样的操作
4、响应
restful使用http code代表状态,找不到资源就404...
普通的springmvc 写的 http api一般都是返回 200 ,找不到资源的时候也是返回200(在系统里查找name="张三"的一条订单),然后在响应体重带上找不到资源的提示。
5、两者关系
理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。
http 接口 按照rest 风格设计 就是 restfull http
webservice 接口 按照rest 风格设计 就是 restfull webserivce.
二、什么是RESTful
1、REST
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
REST其实是一种组织Web服务的架构,而并不是我们想象的那样是实现Web服务的一种新的技术,更没有要求一定要使用HTTP。其目标是为了创建具有良好扩展性的分布式系统。
REST 系统的特征
客户-服务器(Client-Server)
,提供服务的服务器和使用服务的客户需要被隔离对待,通过统一接口通讯。无状态(Stateless)
,来自客户的每一个请求必须包含服务器处理该请求所需的所有信息
。换句话说,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他请求中使用。可缓存(Cachable)
,服务器必须让客户知道请求是否可以被缓存。以尽量减少服务端和客户端之间的信息传输,以提高性能。(Ross:更详细解释请参考 理解本真的REST架构风格 以及 StackOverflow 的这个问题 中对缓存的解释。)分层系统(Layered System)
,服务器和客户之间的通信必须被这样标准化:允许服务器和客户之间的中间层(Ross:代理,网关等)可以代替服务器对客户的请求进行回应,而且这些对客户来说不需要特别支持。统一接口(Uniform Interface)
,客户和服务器之间通信的方法必须是统一化的。(Ross:GET,POST,PUT.DELETE, etc)支持按需代码(Code-On-Demand,可选)
,服务器可以提供一些代码或者脚本(Ross:Javascrpt,flash,etc)并在客户的运行环境中执行。这条准则是这些准则中唯一不必必须满足的一条。(Ross:比如客户可以在客户端下载脚本生成密码访问服务器。)
如果一个系统满足了上面所列出的一到五条约束,那么该系统就被称为是RESTful的。