发表于: 2018-01-05 23:55:09
1 577
今天完成的事情:
完成SSM整合的一个CRUD,REST风格
深度思考
8.1 什么是restful?rest的请求方法有哪些,有什么区别?
Representational State Transfer的缩写。"表现层状态转化"
是Roy Thomas Fielding在他2000年的博士论文中提出的。Fielding是一个非常重要的人,他的目的是得到一个功能强、性能好、适宜通信的以网络为基础的应用软件的架构。
简单来讲,就是使用一套规范来规定 客户端-服务器 这种模式下 通信双方的API(不是协议)
再简单点说
对通信双方做了 增/查/删/改 的操作的 参数(也就是HTTP协议的各项参数) 做了规范。
要点如下:
图中是一个HTTP协议的请求报文:
REST风格指的是:
看报文的Url字段就知道要什么(URI表示资源,又成为路径/终点(endpoint))
看报文的method字段就知道干什么(method字段表示操作)
使用 ?key=value 来筛选
使用状态码对应相应处理结果
hypermedia api返回结果中提供链接,连向其他API方法
阮一峰博客: http://www.ruanyifeng.com/blog/2014/05/restful_api.html
还有这篇 https://jimmylv.gitbooks.io/learning-microservices/content/best-practice/what_really_REST_is.html
常用的请求方法及区别:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
所以CRUD的REST这么设计:
数据表 | url网址 | http method | 数据库操作 |
|
student | /students | POST | CREATE | 新建一个学生 |
/students | GET | SELECT | 获取全部学生 | |
/students/1 | 获取指定id的学生 | |||
/students/1 | DELETE | DELETE | 删除指定id的学生 | |
/students/1-2-3 | 删除多个学生 | |||
/students/1 | PUT | UPDATE | 更新指定id的学生 |
在controller层写好处理方法,调用service层(因为逻辑简单,service层没有做什么处理),再调用DAO(SSM中就是mapper)进行对数据库的操作。
为什么要用Rest风格,如果不用Rest的话,接口应该怎么定义,在使用Rest风格之前,大家都是用什么方式写接口的?
为什么用?说实话,完全是没办法才用的,客户端类型层出不穷,只好出规范了。
移动互联网的影响,导致一个服务器面对多种客户端(浏览器、安卓、ios),需要一套统一的API,趋势选择的RESTful,因为REST是2000年提出的,直到苹果ios引领,安卓参与,移动互联网爆发,才真正广泛使用,因为有了需求,才有了用武之地。
不用Rest,就是以前的,没有什么规则,URI经常有动词表示操作,get有时也提交数据,post经常用来更新资源,总之比较混乱。并没有统一的规范.
解决昨天的问题,怎么解决明天写吧,跟深度思考一个问题一样。
明天计划的事情:
原生servlet、springmvc前端处理器、tomcat
遇到的问题:
无
收获:
在上面。
评论