文章目录
- 1. 新建工程
- 2. 新建若干文件夹
- 3. 设置环境变量
- 4. 授权以及进行请求的链式调用 (chaining requests)
- 4. 1 解决办法 1
- 4. 2 解决办法 2
Insomnia 同 Postman, 用于测试后端 endpoint,很容易使用。
使用步骤如下:
1. 新建工程
2. 新建若干文件夹
目的是对请求进行归类,例如与 store 相关的请求都放到一个叫做 store
的文件夹中,下图所示的工程有4个文件夹:Store, User, Items, Tags
3. 设置环境变量
例如 url,如果修改了 url 或者端口号,设置并使用环境变量,就不需要每个请求手动修改。比方说,将所有请求中的 http://127.0.0.1:5000
手动改成 http://127.0.0.1:5005
,会比较繁琐。
编辑环境变量可以点击 UI 中的 No Environment -> Managements,也可以使用 Ctrl + E
打开,然后设置 url,这里的名称可任意,但后面使用时要与其一致:
设置之后,请求的路径例如 http://127.0.0.1:5005/store
可以改成 {{url}}/store
, {{url}}
会自动变成紫色,如下图所示:
4. 授权以及进行请求的链式调用 (chaining requests)
授权可以使用 jwt,jwt 在用户 login 之后获得,执行特定的操作需要此 token,例如 POST,DELETE,PUT 等,直观的测试方法是,先发送 login 请求,然后复制响应中的 jwt token,然后将其粘贴到需要授权的请求的 Header 中:Bearer <jwt_token>
,如下图所示:
如果 token 过期,需要重新 login,再次复制 token 并粘贴到这里,粘贴复制的方法繁琐。
4. 1 解决办法 1
在 Bearer
后按 Ctrl + Space, 出现下拉列表,选择 Response =>Body Attribute
(中文输入状态不会出现下拉列表,要切换成英文)
然后点击红色的文字进行设置。在 Filter(JSONPath or XPath)
一项,单独输入 $
可看到完整的 login 响应, 其中有一项是 access_token
, $.access_token
可获得 jwt,(这里的 access_token
可以是其他名称,根据 login 响应而定。最右端的设置图标不要点,默认就可以)
Trigger Behavior 可以选择当 jwt 过期后,如果执行此请求,Insomnia 自动发送一条 login 请求,重新获得 jwt token, 那么要多长时间后发送 login 请求呢,例如可以设成 300,即5分钟。
假如说 jwt 的有效时间是极短的 10 秒,而上图中的 Max age 设 60 秒,则 10 秒之后,jwt 失效,因此 10 秒之后的 50 秒内 post 请求全部失败,一直到第 61秒发送 post 请求时,Insomnia 自动发送 login 请求获取新的 token,post 请求 ok,以下是 Docker log:
设置完成后的界面:
此方法虽然可以自动获得 jwt token,不再需要从 login 响应中复制 jwt token 再粘贴到其他请求的 Header 里,但是每个需要授权的请求都要这样设置一遍,也不算特别理想。
4. 2 解决办法 2
同样设置环境变量,Ctrl + E,添加一项 access_token
, 然后 Ctrl + Space, 同上面的设置步骤,(测试发现唯一有区别的地方是,这里 Max age 无法修改成 60 以外的值,每次重新打开 Edit Tag 界面都发现是 60) ,设置完成后如下图所示:
之后,Header 中的 Bearer
后直接加 {{access_token}}
就可以,每条需要授权的请求都可以这样加:
这样就实现了请求的链式调用,之后执行需要授权的操作,不再需要复制粘贴 jwt。