说明:本文介绍如何使用Apifox来调试项目,并记录一次使用Apifox调试代码时的错误。
获取令牌
调试代码必现拿到令牌,拿到令牌,有两种思路。
(1)修改Redis配置
一般来说,项目中的登录都会用到Redis,用来存储用户登录成功的令牌(可能是token或cookie)。这样就好办了,可以将本地项目中的Redis配置改为测试环境的(如果你能看到测试环境项目的Redis配置),这样登录测试环境的项目(PC或移动端),登录进去(应该有测试账号)
(cookie)
(token)
然后按F12,查看是否有token或cookie,复制下来,在Apifox里面调用接口的时候加在请求头里,这样就可以调试本地代码了
这种方式比较适合账号密码+验证码登录的。因为验证码是随机的,也是走接口生成的,用下面这种调用登录接口的方式,拼接参数还比较麻烦。
(2)调用登录接口
可以使用Apifox直接调用项目的登录接口,这种方式最适合单纯的账号密码登录的项目。Apifox有个管理cookie的功能,调用了一次登录接口后,再调用其他接口会自动帮你携带cookie,非常方便。
问题
最近调试项目,我一直是将修改后的Redis配置暂存(Shelve Changes…)起来,调试的时候再加载(Unshelve)到Change里。但今天不小心给Rollback了,然后暂存里的修改也删掉了。无奈,就又手动去修改了Redis配置,启项目,打断点,拿token,调试代码,发送请求时Apifox报下面这个错误。
Invalid character in header content["token"]
说请求头中token是无效字符,但我反复检查,项目反复重启后还是这样。于是,我就将token去掉,cookie管理中的cookie记录都清掉,然后让系统报登录失效的错误信息,然后打断点去看登录这里的逻辑,看有没有拿到token;
为null,是对的,因为我没加token
后面,我再加上,就奇迹般的可以了。我怀疑是缓存的原因。
总结
本文介绍了使用Apifox调试代码的两种方式:
-
方式一:将token或cookie加到请求头中,调用接口;
-
方式二:调用项目的登录接口,让Apifox管理cookie;