下面我们举几个例子对 REST 请求进行简单描述:
文章插图
可见,请求路径相同,但请求方式不同,所代表的业务操作也不同,例如,/advertiser/1 这个请求,带有 GET、PUT、DELETE 三种不同的请求方式,对应三种不同的业务操作 。
虽然 REST 看起来还是很简单的,实际上我们往往需要提供一个 REST 框架,让其实现前后端分离架构,让开发人员将精力集中在业务上,而并非那些具体的技术细节 。
五、前后端分离意义大吗?1、该网站前端变化远比后端变化频繁,则意义大 。
2、该网站尚处于原始开发模式,数据逻辑与表现逻辑混杂不清,则意义大 。
3、该网站前端团队和后端团队分属两个领导班子,技能点差异很大,则意义大 。
【程序员经常谈论的前后端分离,前后端解耦】4、该网站前端效果绚丽/跨设备兼容要求高,则意义大 。
六、术业有专攻(开发人员分离)以前的JavaWeb项目大多数都是java程序员又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/MySQL/oracle等等) 。
随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情 。
正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精 。
大中型公司需要专业人才,小公司需要全才,但是对于个人职业发展来说,我建议是分开 。
对于后端java工程师:
把精力放在java基础,设计模式,jvm原理,spring+springmvc原理及源码,linux,mysql事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构(dubbo,dubbox,spring cloud),弹性计算架构,微服务架构(springboot+zookeeper+Docker+jenkins),java性能优化,以及相关的项目管理等等 。
后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等 。
对于前端工程师:
把精力放在html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,google V8引擎,JavaScript多线程,模块化,面向切面编程,设计模式,浏览器兼容性,性能优化等等 。
前端追求的是:页面表现,速度流畅,兼容性,用户体验等等 。
七、耦合时代几曾何时,我们的JavaWeb项目都是使用了若干后台框架,springmvc/struts + spring + spring jdbc/hibernate/mybatis 等等 。
大多数项目在java后端都是分了三层,控制层(controller/action),业务层(service/manage),持久层(dao) 。
控制层负责接收参数,调用相关业务层,封装数据,以及路由&渲染到jsp页面 。
然后jsp页面上使用各种标签(jstl/el/struts标签等)或者手写java表达式(<%=%>)将后台的数据展现出来,玩的是MVC那套思路 。
我们先看这种情况:需求定完了,代码写完了,测试测完了,然后呢?要发布了吧?
你需要用maven或者eclipse等工具把你的代码打成一个war包,然后把这个war包发布到你的生产环境下的web容器(tomcat/jboss/weblogic/websphere/jetty/resin)里,对吧?
发布完了之后,你要启动你的web容器,开始提供服务,这时候你通过配置域名,DNS等等相关,你的网站就可以访问了(假设你是个网站) 。
那我们来看,你的前后端代码是不是全都在那个war包里?包括你的js,css,图片,各种第三方的库,对吧?
好,下面在浏览器中输入你的网站域名(www.xxx.com),之后发生了什么?(这个问题也是很多公司的面试题)
我捡干的说了啊,基础不好的童鞋请自己去搜 。
浏览器在通过域名通过dns服务器找到你的服务器外网ip,将http请求发送到你的服务器,在tcp3次握手之后(http下面是tcp/ip),通过tcp协议开始传输数据,你的服务器得到请求后,开始提供服务,接收参数,之后返回你的应答给浏览器,浏览器再通过content-type来解析你返回的内容,呈现给用户 。
那么我们来看,我们先假设你的首页中有100张图片,此时,用户的看似一次http请求,其实并不是一次,用户在第一次访问的时候,浏览器中不会有缓存,你的100张图片,浏览器要连着请求100次http请求(有人会跟我说http长连短连的问题,不在这里讨论),你的服务器接收这些请求,都需要耗费内存去创建socket来玩tcp传输(消耗你服务器上的计算资源) 。
重点来了,这样的话,你的服务器的压力会非常大,因为页面中的所有请求都是只请求到你这台服务器上,如果1个人还好,如果10000个人并发访问呢(先不聊服务器集群,这里就说是单实例服务器),那你的服务器能扛住多少个tcp连接?你的带宽有多大?你的服务器的内存有多大?你的硬盘是高性能的吗?你能抗住多少IO?你给web服务器分的内存有多大?会不会宕机?
推荐阅读
- 经常跳街舞可以减肥吗
- 经常跳街舞能瘦身吗
- 雀斑是怎样形成的,你经常照射紫外线吗
- 解密初、中、高级程序员的进化之路
- 晚上经常睡不着觉啊,听说中岳仙茶安神助眠特效,...
- 胃返酸水是怎么回事?
- 穿衣搭配|我,女程序员,月薪三万,36岁单身,很失败吗?
- 老年人经常腿发麻是怎么回事?
- 茶不宜用纸杯泡
- 经常梦见死去的前夫是怎么回事 梦见前夫去世了好不好