后端总说他啥也没动,我从线上调了一下测试接口,你再说一句动没动
创始人
2024-04-11 10:06:43
0

       ◇  不知道广大前端同学有没有过这样的经历,在做新需求联调的时候,原本上一个版本已经做的好好的功能,前后端已经联调好的。这次做需求的时候,测试发现好多地方都不对了。

        ◇ 开发人员经常说的一句话就是:我啥也没动啊。这次就是,我们这个后端,一口咬死,我啥也没动,要不你问一下前端是不是动哪里了?

6d68a77244d747a0abd10d21fc30acde.png

        如果这个时候你再和他争吵下去就像极了这个图片一样,两个人都张大了嘴,来吧,我们互相伤害。 

        因为是在测试环境,大家都做了新需求,谁也不敢保证自己没动,所以这个时候争吵是无意义的。那么幸亏我提前准备了一招。

1、现在前端是怎么区分测试环境与线上环境的? 

        其实这个问题现在是一个普遍现象,之前也说过好几次了。

        △ 大家都是通过npm run build /prod来区分环境的,所以如果准备测试的时候,我们很高兴的终于做完需求了,打了一个npm run build包,开始部署。

        测试阶段完了,测试同学说,咱们往测试环境部署一下正式包吧,验证一下线上环境的接口。然后我们又npm run prod一下,然后部署上去。测试验证过后,喊一声没问题了,发报告吧。发完收到通知,然后我们就开始把刚才npm run prod那个包部署到线上去。

        但是线上那个包,貌似验证不了测试环境吧?

        △ 还有一种方式呢,就是前端不做处理,把HTML做到服务端进行渲染。服务端是可以区分测试环境的机器与线上环境的机器的,所以我们前端只要打一个包就可以,不用区分测试与线上环境。只要服务端识别到是测试机器,还是线上机器,就可以在HTML页面帮我们渲染一个区分变量,我们前端用以区分请求环境。

        但是一但到了线上,貌似线上的js还是没法往测试环境发请求吧?

2、为什么要从线上往测试环境发请求?

        这也是出于周全考虑的一种策略行为。试想,在开发新需求的时候,如果后端的接口名字没变,只是参数变了;或者后端的接口没变,参数没变,逻辑变了?再或者后端直接把接口名字给变了;每一种情况其实都会有一定的危险的,所以,能不上线就不上线。

        比如后端把接口名字变了,我们没有反应及时,或者沟通不及时,那么这个时候的上线过程必定是要出问题的。

        比如后端参数变了,那么试想,我们前端先上线,线上的接口会不会不适应的新版本的js,服务端先上线,会不会接收不到前端的新参数而不适应。就会变得像下面这张图一样,造成扭曲的情况。

b52ba6e788104d4187c9369ed51818a8.png

        虽然每次我们所做的功能都应该是向后兼容的,但多做一些测试措施总是没错的。

3、线上怎么向测试环境发请求?

        △   例如测试环境的请求前缀是  test.xx.com/api    而线上环境的请求前缀是 prod.xx.com/api

        △   那么我们前端一定是要有地方适配这2个前缀的。

        △  比如我们的网站访问地址为: www.ooo.com 这个时候调用的一定是prod.xx.com/api的请求域名

        △ 这个时候我们手动给url加个参数 例如 www.ooo.com?test=ok

        △ 这个时候如果没有任何操作,其实这对我们网站是没有任何意义的,但是我们可以在js的代码里做适配

function geturlparam(key){let url = window.location.href;let params = url.split('?')[1]let getParam = new URLSearchParams(p);return getParam.get(key);
}
var testOrProd = geturlparam('test'); 
let urlDomain = '';
if (testOrProd === 'ok') {urlDomain = 'test.aa.com/api';
} else {urlDomain = 'prod.aa.com/api';
}module.exports = urlDomain;

通过这种线上环境向测试环境发请求的方式,是不是就可以做到另一个维度的测试了呢

----------------------最近表弟大学要毕业了,要学前端,我给他制定了一份亲属自学辅导计划,还望大家指点------------------------------------------------- 

表弟大学毕业要学前端,我给他制定了一份亲属自学计划

-------------------------------------------------------------------------------------------

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...