为什么要前后分离
前后分离——开发阶段,前后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段前后端分离模式需要对web
应用进行分离部署,使用HTTP
或者其他协议进行交互请求。
在以前传统的网站开发中,前端一般扮演的只是切图的工作,简单地将UI
设计师提供的原型图实现成静态的HTML
页面,而具体的页面交互逻辑,比如与后台的数据交互工作等,可能都是由后台的开发人员来实现的,这也就导致了前后端工作分配不均。这样做不仅仅开发效率慢,代码也难以维护。而前后端分离的话,则可以很好的解决前后端分工不均的问题,将更多的交互逻辑分配给前端来处理,而后端则可以专注于其本职工作,像提供API
接口,进行权限控制以及进行运算工作。前端可以独立完成与用户交互的整一个过程,两者都可以同时开工,不互相依赖,开发效率更快,而且分工比较均衡。
数据接口规范流程
http协议
理解HTTP
是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)
。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP
请求到服务器上指定端口(默认端口为80)。
通常,由HTTP
客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP
连接。HTTP
服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK"
,以及返回的内容,如请求的文件、错误消息、或者其它信息。
工作原理
HTTP
协议定义Web
客户端如何从Web服务器请求Web
页面,以及服务器如何把Web
页面传送给客户端。HTTP
协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL
、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
基于 请求-响应 的模式HTTP
协议规定,请求从客户端发出,最后服务器端响应该请求并 返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有 接收到请求之前不会发送响应
无状态保存HTTP
是一种不保存状态,即无状态(stateless)
协议。HTTP
协议 自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP
这个 级别,协议对于发送过的请求或响应都不做持久化处理。
HTTP请求方法HTTP
协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:1.GET:
向指定的资源发出“显示”请求。使用GET
方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application
中。其中一个原因是GET
可能会被网络蜘蛛等随意访问。
2.HEAD:
与GET
方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
3.POST:
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
4.PUT:
向指定资源位置上传其最新内容。
5.DELETE:
请求服务器删除Request-URI
所标识的资源。
6.TRACE:
回显服务器收到的请求,主要用于测试或诊断。
7.OPTIONS:
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用*
来代替资源名称,向Web
服务器发送OPTIONS
请求,可以测试服务器功能是否正常运作。
8.CONNECT:
HTTP/1.1
协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL
加密服务器的链接(经由非加密的HTTP
代理服务器)。
get与post请求的区别
GET
提交的数据会放在URL
之后,也就是请求行里面,以?
分割URL
和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456
;POST
方法是把提交的数据放在HTTP
包的请求体中。因此,GET
提交的数据会在地址栏中显示出来,而POST
提交,地址栏不会改变GET
提交的数据大小有限制(因为浏览器对URL
的长度有限制),而POST
方法提交的数据没有限制
HTTP状态码
所有HTTP
响应的第一行都是状态行,依次是当前HTTP
版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。
状态代码的第一个数字代表当前响应的类型:
常见状态码
200 OK /客户端请求成功
301 //永久性重定向,表示资源已被分配了新的URL
302 //临时性重定向,表示资源临时被分配了新的 URL
304 //表示服务器校验后发现资源没有改变,提醒客户端直接走缓存来取资源
400 //客户端请求有语法错误,不能被服务器所理解
401 //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 //服务器收到请求,但是拒绝提供服务
404 //请求资源不存在,eg:输入了错误的URL
500 //服务器发生不可预期的错误
503 //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
504 //网关超时
END