用 Apifox 测试接口,因为这个错误浪费了我近2个小时?!

5,683 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

大家好,我是CoderBin

前言

事情是这么回事,这不准备毕设了嘛,打算整个前后端分离的项目。既然打算做后端了,那么API测试总不能像以前那样丢 Postman 一个个测吧,然后还得删掉换另一个接口,这多可笑呀😄(以前就是这么干的)。

于是就想到在测试工具里面建个项目,在里面管理每一个接口就好啦。我第一个想到的是 Postman 因为确实用了挺久(其实也就简单发发请求...),但因为是纯英文的,用着不是很爽快。后来灵光一闪,想到了号称“国产之光”的 Apifox,四处都是他家的广告,不注意都不行😓...

Apifox 整体 UI 布局感觉还是可以的,挺符合我的审美,而且也确实可以创建项目,单独管理接口。于是便踏上了不归之路,但没想到,后面出现了一个沙雕错误,因为这个错误浪费我快2小时💔...

下面就带着大家简单使用Apifox,并回顾一下案发现场💥

创建项目

首先,创建一个名为 csms_api_server 的项目

image.png

有一说一,UI确实还可,还支持多种主题颜色👍

设置前置URL

由于接口都是由固定的url开头,所以Apifox也支持自定义前置URL

先点击头部的菜单,然后填写自己定义的前置URL

image.png

测试登录接口

创建了项目后,因为我后端开启了jwt鉴权模式,必须先登录获取token,然后请求头携带token才可以请求其他接口,所以就先测试登录接口

测试步骤:新建接口 -> 填入基本信息数据 -> 保存 -> 运行

运行结果如下,已经可以拿到token数据了,接下来只要给其他结接口添加Auth认证即可

image.png

将响应数据的token设置为环境变量

image.png

再次点击发送,就可以看到控制输出了已设置环境变量【token】

image.png

这样我们就可以在项目概览中设置token了,后面的接口会继承父级的token

image.png

测试查询接口,出现错误?!!

接来下测试查询用户列表接口

image.png

王德发?!!为毛 token 没用了

在这里我排查了各种可能出现的问题:后端错误拦截是否出问题、后端解析token是否失效、apifox的变量是不是没设置到,然后百度等等等等。。。。

我还专门跑去 b 站 Apifox 官方视频学习了下设置变量的问题,查漏补缺,发现我操作没问题啊

后来我不信邪,我将 token 复制到了 Postman 中去测试查询接口,发现竟然查询到数据了?!!

发现问题,解决方法

就这样我前前后后测来测去(加摆烂)搞了快2小时,最终无意间点到了这个地方,(眼神好的可以找找哪里的问题😏)如下图:

image.png

我瞄来瞄去,发现 Header 也确实携带了 Authorization 字段呀,诶?等等!!

特喵的!Authorization 的值前面怎么会有两个 Bearer 😱 ?!!

破案了,原来是 Apifox 会默认在 token 前面添加 Bearer,而我后端为了图方便,直接给 token 拼接上了 Bearer 进行返回,所以才出现了两个Bearer的问题😓

只需要在后端改下返回的 token,不拼接 Bearer 就行了,最终请求成功😄!

image.png

最后

人麻了,找问题的过程中甚至想换成 Postman 来开发得了。最后还是有惊无险,找到问题并解决了,这个问题算是我使用 Apifox 的第一个坑吧。后端返回的 token 不能带 Bearer ,因为 Apifox 会自动添加上,否则会出现我上面的问题


每文一句:吾生也有涯,而知也无涯。

本次的分享就到这里,如果本章内容对你有所帮助的话可以点赞+收藏。文章有不对的地方欢迎指出,有任何疑问都可以在评论区留言。希望大家都能够有所收获,大家一起探讨、进步!