分享人:慕孟洋
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
restful风格,就是一种面向资源服务的API设计方式,它不是规范,不是标准,它一种设计模式。
REST -- REpresentational State Transfer 直接翻译:表现层状态转移。
用一句话来描述就是:
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
REST是一种软件架构模式。核心概念包括:
资源(Resource):在REST中,资源可以简单的理解为URI,表示一个网络实体。 比如,/users/1/name,对应id=1的用户的属性name。
表现(Representation):是资源呈现出来的形式,比如上述URI返回的HTML或JSON,包括HTTP Header等;
既然资源是URI,就会具有以下特征:名词,代表一个资源;它对应唯一的一个资源,是资源的地址。
为什么使用rest?
我们平时搞系统是这样的:
1.有新建用户功能
2.新建用户需要一个URL
3.往这个URL发送的数据要定义好
4.开始写后端和前端
这是以操作为第一位的设计方法,首先我们确认了一个操作,然后围绕这个操作把 周边需要的东西建设好,这种方式当然可以架构出一个系统,甚至是一个好系统。
出现的问题:
1.操作之间是会有关联,你的设计容易变成“第2个操作要求第1个操作进行过”,这种关系多起来你的系统就乱了
2.你的URL设计会缺乏一致性
3.操作通常被认为是有副作用(Side Effect)的,所以很少有人基于操作去设计缓存之类的东西
基于这些问题,我们的另一种方法是基于资源的角度来搞:
1.各个资源虽然可能有关联,但依旧是能够简单地切掉这些关联导致相互独立的,所以不会有非常乱的耦合性
2.对资源的操作就这么几种,所以很容易设计一致的URL
3.我们明白对资源的读操作是无副作用的,所以能玩缓存
rest的优势和优点:
首先,REST规范:
1.强调HTTP应当以资源为中心,并且规范了资源URI的风格;
2.规范了HTTP请求动作(PUT,POST等)的使用,具有对应的语义;
遵循REST规范的Web应用将会获得下面好处:
1.URL具有很强可读性的,具有自描述性;
2.资源描述与视图的松耦合;
3.可提供OpenAPI,便于第三方系统集成,提高互操作性;
4.如果提供无状态的服务接口,可提高应用的水平扩展性;
get、put、post、delete含义与区别
1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样, 只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。 无论进行多少次操作,结果都是一样的。
2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update 操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源, 就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
html表单form中,method没有put、delete?
1.在 web.xml 中配置 HiddenHttpMethodFilter 过滤器
2.编写表单模拟 PUT 和 DELETE
方式提交说明: PUT 和 DELETE 方式 ,在写表单提交的时候还是发送 post 请求, 但是要附加一个隐藏的文本域,name 的值固定为 “_method”,value 写 “PUT” 或者 “DELETE”。
3.编写控制器
对于用户登录和用户退出这两个业务需求,REST指导下的架构和设计如何满足?
https://www.zhihu.com/question/33959971/answer/57593571
参考一:http://www.ruanyifeng.com/blog/2011/09/restful.html 理解RESTful架构
参考二:http://blog.csdn.net/programmer_sir/article/details/51592433 Restful风格到底是什么?怎么应用到我们的项目中?
......
感谢大家观看
BY : 慕孟洋