发表于: 2017-10-16 21:56:21
1 897
今天完成的事:
1.深度思考
2.任务总结
1.深度思考:
什么是restful?rest的请求方法有哪些,有什么区别?
至于各种定义官方定义网上一大推,某个知乎大牛是这么总结的,也很赞同。
看Url就知道是什么
看http method就知道干什么
看http status code就知道结果如何
符合rest风格就能够直观的通过URL就知道是哪类资源,提供的Http方法就知道了要对这类资源进行什么操作,http status code就反映了结果。
在看了<Spring实战>这本书关于restful的章节后算是真正理解了什么是restful了,符合restful的URL的直观来看就是标识的一个资源,不会出现任何动词。URL本身就是资源唯一标识符,restful完全承认URL用于标识资源,所以绝对是不允许出现动词的,如果出现了动词就表明了你这个URL是面向行为的也就变成了RESTless。还有就是restful把参数看成是URL的一部分,如/user/{id}。restful URL的有层级的,从左到右是从笼统到具体的过程,比如该 URL
/students/{grade}/{name} ,students是一个更高层级的资源,往下grade是下一层级的资源,而name就构成了一个最精准的资源。
通过四种方法可以表明对URL标识的资源进行什么操作(在操作时用户可能会重复进行操作,因此对于官方定义为非幂等的方法不能写成幂等的,反之怡然)。需要考虑方法的幂等和安全性。如果一个方法不改变资源的状态就是安全的,幂等方法可能改变也可能不会改变资源的状态,但一次请求和多次请求对资源的改变是相同时就说这个方法是幂等的。按照规定,所有安全的方法都必须是幂等的,也就是说用户多次对一个资源进行某种操作始终不会改变或多次对某个资源进行操作和只进行一次对资源造成的改变是相同时这个方法是幂等的也就是安全的。
还有一点需要注意的是,使用post方法是没有方法去使用URL去标注这个还未存在的URL的,因此一般做法是只使用仅标注上层的资源,然后在处理完毕后响应新建的信息到客户端。
还有一个问题需要注意的是就是很少有浏览器支持put和delete方法,有处理方法是将put或delete以post类型发送,隐藏真实的请求类型。后端可在web.xml中配置一个过滤器来转换为真实的请求类型。
GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
2.为什么要用Rest风格,如果不用Rest的话,接口应该怎么定义,在使用Rest风格之前,大家都是用什么方式写接口的?
为什么要用rest,这个还真不知道,网上查了查也是说法不一。就我自己理解觉得规范了,结构清晰了。rest风格之前是直接访问jsp吧?
2.什么是maven module
module是maven中管理依赖的,具体的没有去深究。
3.什么是http协议?Get和post请求有什么区别?http请求content-Type有几种,有什么区别?http适合什么场景?http状态码有哪些?
http协议tcp/ip的上层协议,属于应用层。http协议依赖于tcp/ip从一端传送请求和响应,http协议是一个简单的请求/响应序列:浏览器发出请求,服务器做出响应。
如上所述,Get用于发送请求(可以带参数,不过参数会直接暴露在URL中,十分不安全),Get主要用户新建资源,发送的参数是放在消息体中。
常见的content-Type是json,html,xml等。http适合web应用。状态码常见的为404找不到页面,还有就是405拒绝连接。
4.什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?
tcp/ip是稳定的通信协议,之所以说稳定是基于它的三次握手及重发机制。tcp/ip首先说一下为什么需要三次握手,三次握手主要是为了保证网络传输的稳定性,如果信道足够可靠,那么三次也不需要,一次握手即可,之所以三次是因为信道不可靠因此需要三次来对双向的信道做个验证确保网络稳定。四次或更多次是完全没必要的,若是网络信道不可靠三次握手都没能正常完成,四次又有何意义呢。
任务总结:
遇到的问题:
刚开始时SpringMvc的配置文件流程什么的没什么难理解的,后来感觉不适用spring太难受了,mybaits的连接什么的,事物什么的,依赖等等还得自己写所有就引入spring形成了ssm的形式,引入了ssm就懵逼了,各种问题。首先是无法拿到spring中的Bean,第二就是程序运行了却没有加载spring配置文件,耗费了很长时间。最后看了网上的一些概念和于博韬大佬的源码就搞明白了,web.xml的作用,springMvc配置文件的作用。首先web.xml是整个web应用的配置文件,其次springmvc是使用springmvc需要的配置,最后也就是spring的配置文件。springMvc的配置文件需要作为初始化参数配置到web.xml中的SpringMvc前端控制器中,spring的配置文件需要作为上下文初始化参数配置在web.xml中.
遇到的疑问:
就是说我用postman发送一个delete的请求,控制器能正常接收请求处理,在控制器处理完毕,转到视图器去处理时报错说jsp不接受delete和put请求,实在搞不懂
遇到的疑难:
无
明天计划完成的事:
1.虽然说已经将任务2的项目部署远程服务器了的tomcat容器了,还是想学一下resin在部署。
2.了解下nginx
遇到的困难:
无
收获:
通过任务二,对于设计restful API接口有了一定的经验,学会了springMvc,也对web应用从发送请求到后端处理请求的流程有了清晰的认识,最后完成了ssm框架的整合。
评论