记一次前后端两兄弟的争执
1.
作为一个从事 Java 编程 10 年的后端研发人员,今天着重顶一下我的前端兄弟。
北京的天气像个闷葫芦似的,大家都像喝了闷倒驴。这不,一个前端的兄弟与一个后台的兄弟,在晕乎乎的状态下互掐了起来,在功能实现上进行了唇枪舌战。
2.
事情的发展是这样的。
缘起。产品大大要实现一个图片上传、预览的功能。
后端兄弟听了业务需求,内心窃喜。因为前两天刚在运营平台上,实现过相同的功能,直接提供一个图片上传的接口,然后再提供一个图片预览的接口,今晚就能吃鸡大吉大利啦。
前端兄弟听了业务需求,又结合自己以往的经验,这功能实现分分钟,只要后端那哥们接口定义好,具备联调能力就行,其实就坐等后端那哥们的接口能力输出就好。
最后,前后端两位兄弟商议,半天时间搞定。产品大大反应甚是吃惊,感觉技术人员这么给力,真是666。
干呗。说时迟那时快,后端兄弟直接从原有项目需求中,扒拉出一个接口文档,把文档创建人改吧改吧,另外又删除一些没用的信息,花了 2 分钟时间,给前端兄弟提供了接口文档。
前端兄弟接到接口文档,根据接口文档,外加自己以往的经验判断,直接从以往的项目需求中抽出 CSS、JavaScript 脚本、可复用的页面,大概用时 10 分钟抽出了上传、预览的功能页面,并尝试跑了一下,感觉还可以,就静等调试接口了。
联调。事情终于发展到了高潮部分,毕竟前后端两位兄弟,都是经验丰富的资深程序猿,不到一会儿的功夫,代码很快就开发完成。
当两位兄弟,沉浸在各自喜悦的功能实现时,未曾想调试预览功能,图片却死活展示不出来。
于是扯皮就正式开始了。后端兄弟要求前端,把代码贴出来分析一下,前端兄弟当然很配合,于是就贴出来代码
<img src='//test.com/user/images/auth.jpg' />
这代码一贴不当紧啊,后端兄弟火冒了三丈。
后端兄弟:你这写的有问题啊,应该是 http:// 或者 https:// 开头,所以你要整个配置或者考虑其它实现方案,但是一定要进行修改?
前端兄弟:我这么实现肯定没问题,因为线上已经有功能在跑了,是你接口实现的问题,赶紧查查咋回事呗?
但是后端我兄弟坚持去让前端去改,依然坚信前端实现有问题,已经濒临爆炸的边缘。最后情不得已,前端兄弟在猿门开坛设法,认真的用理论 + 实践展开了那激烈的讲解。
按照公司的安全规划,会进行网站的安全升级,那势必要支持 http 和 https 的无缝切换。但是实际网站的代码却只有一份,那么在这种情况下,咱们就可以使用相对 URL 的方式改写网页内资源的请求 URL。URL 相对路径其实你并不陌生,你应该经常见这样的写法。
<img src='/user/images/auth.jpg' />
那么网页中浏览的时候就变成了
<img src='http://test.com/user/images/auth.jpg' />
但是这种写法只适合前后端跑在一起的场景,像咱们这种前后分离这么彻底,前端要访问你的资源服务,有没有想过,咱们进行安全加固、协议升级,统一从 http 无缝切换为 https,那是不是前端都把代码要从头改到尾。
所以现在用的这种写法,是省略 URL 中的 Scheme 部分这样的相对路径,不过这种写法比较少见,所以你认为写的有问题。例如:
<img src='//test.com/user/images/auth.jpg' />
其实如果放在 http 的页面上,那么请求的资源就是
<img src='http://test.com/user/images/auth.jpg' />
如果放在 https 上,则访问的资源就是
<img src='https://test.com/user/images/auth.jpg' />
那么这样一来咱们就无需为 http 和 https 而担忧了,而且也不用写不同的页面代码,这样一套代码就实现了 http 与 https 的无缝切换。
还是简单总结一下:// 缺省协议的使用,代表资源访问的协议和当前页面保持一致,如果当前页面是 http ,采用http 协议访问,如果是 https,则使用 https 协议访问。这样就不管是 http,还是升级到 https,都不用改动代码,很多 CDN 资源都是这样引用。
前端兄弟激情的讲解接近尾声,于是又跑了个真实的项目,效果确实杠杠滴。
真是术业有专攻,咱也不敢问,咱也不敢说。听完前端兄弟的讲解,后端的兄弟一头扎入自己的接口实现逻辑,麻溜的开始了经验性的 Debug。
过了大概 10 分钟,后端兄弟面带善意的微笑,找前端兄弟协助再联调一下,前端兄弟非常之配合。其实不出所料,图片功能预览正常。
3.
好了,今天的分享讲完了。其实分享的重点不是如何实现功能,而是想传达一下:从事码农工作的我们,除了跟计算机打交道以外,避免不了的就是日常的沟通,难免会遇到打太极、踢皮球,甚至会擦出火花,但是如果我们都能静下来,用我这位前端兄弟的态度去解决问题,可能事情处理的结果,会别有一番风味在心头。