1、前言
”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦 。并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,Android/ target=_blank class=infotextkey>安卓,IOS等等)打下坚实的基础 。前后端分离(解耦)的核心思想是:前端html页面通过Ajax调用后端的RestFul API并使用Json数据进行交互 。一般只有Web服务器才能被外网访问,应用服务器只能内网访问 。
2、为什么前后端分离
一般公司后端开发人员直接兼顾前端的工作,一边实现API接口,一边开发页面,两者互相切换着做,而且根据不同的url动态拼接页面,这也导致后台的开发压力大大增加 。前后端工作分配不均 。不仅仅开发效率慢,而且代码难以维护 。
而前后端分离的话,则可以很好的解决前后端分工不均的问题,将更多的交互逻辑分配给前端来处理,而后端则可以专注于其本职工作,比如提供API接口,进行权限控制以及进行运算工作 。而前端开发人员则可以利用nodejs来搭建自己的本地服务器,直接在本地开发,然后通过一些插件来将api请求转发到后台,这样就可以完全模拟线上的场景,并且与后台解耦 。前端可以独立完成与用户交互的整一个过程,两者都可以同时开工,不互相依赖,开发效率更快,而且分工比较均衡 。
3、从MVC到前后端分离
MVC 是一种经典的设计模式,全名为 Model-View-Controller,即 模型-视图-控制器 。
其中,模型 是用于封装数据的载体,例如,在 JAVA 中一般通过一个简单的 POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的 Java Bean,包含一系列的成员变量及其 getter/setter 方法 。对于 视图 而言,它更加偏重于展现,也就是说,视图决定了界面到底长什么样子,在 Java 中可通过 JSP 来充当视图,或者通过纯 HTML 的方式进行展现,而后者才是目前的主流 。模型和视图需要通过 控制器 来进行粘合,例如,用户发送一个 HTTP 请求,此时该请求首先会进入控制器,然后控制器去获取数据并将其封装为模型,最后将模型传递到视图中进行展现 。
综上所述,MVC 的交互过程如下图所示:
文章插图
我们输入的是 AJAX 请求,输出的是 JSON 数据,市面上有这样的技术来实现这个功能吗?答案是 REST 。
如果将浏览器这一端视为前端,而服务器那一端视为后端的话,可以将以上改进后的 MVC 模式简化为以下前后端分离模式:
文章插图
可见,有了 REST 服务,前端关注界面展现,后端关注业务逻辑,分工明确,职责清晰 。
4、认识Rest架构
REST 本质上是使用 URL 来访问资源种方式 。众所周知,URL 就是我们平常使用的请求地址了,其中包括两部分:请求方式 与 请求路径,比较常见的请求方式是 GET 与 POST,但在 REST 中又提出了几种其它类型的请求方式,汇总起来有六种:GET、POST、PUT、DELETE、HEAD、OPTIONS 。
尤其是前四种,正好与CRUD(Create-Retrieve-Update-Delete,增删改查)四种操作相对应,例如,GET(查)、POST(增)、PUT(改)、DELETE(删),这正是 REST 与 CRUD 的异曲同工之妙!需要强调的是,REST 是“面向资源”的,这里提到的资源,实际上就是我们常说的领域对象,在系统设计过程中,我们经常通过领域对象来进行数据建模 。
REST 是一个“无状态”的架构模式,因为在任何时候都可以由客户端发出请求到服务端,最终返回自己想要的数据,当前请求不会受到上次请求的影响 。也就是说,服务端将内部资源发布 REST 服务,客户端通过 URL 来访问这些资源,这不就是 SOA 所提倡的“面向服务”的思想吗?所以,REST 也被人们看做是一种“轻量级”的 SOA 实现技术,因此在企业级应用与互联网应用中都得到了广泛应用 。
下面我们举几个例子对 REST 请求进行简单描述:
文章插图
可见,请求路径相同,但请求方式不同,所代表的业务操作也不同,例如,/advertiser/1 这个请求,带有 GET、PUT、DELETE 三种不同的请求方式,对应三种不同的业务操作 。
虽然 REST 看起来还是很简单的,实际上我们往往需要提供一个 REST 框架,让其实现前后端分离架构,让开发人员将精力集中在业务上,而并非那些具体的技术细节 。
推荐阅读
- 面瘫前兆 面瘫的原因 针灸治疗面瘫的方法
- 针灸减肥有奇效开始之前需要了解这6点
- 最早的史前壁画是什么 最早的壁画始于何时
- 自己装修流程介绍
- 怎样清洗冰箱
- 浙江省前10所大学 浙江大学是十大名校之一吗?
- 没有连续打卡14天能参加考试吗 开学前14天打卡需要同一个地方打卡吗
- 为什么酒店前台都是年轻美女?工资只有两三千,却还是愿意做
- 交通事故纠纷处理小窍门
- 世界上最贵的钻石项链前十名 世界上最贵的水晶鞋