Insomnia:简洁高效的 API 客户端
FreeGuideOnline
最新
2026-07-01
json { "title": "Insomnia 教程", "body": "这是一篇详细的 Insomnia 使用教程", "userId": 1 }
3. 点击 **Send**,即可收到创建成功的响应,包含 `id` 等自动生成的字段。
### 设置查询参数和请求头
对于 GET 请求的过滤或搜索,点击 URL 输入框下面的 **Query** 标签,可以以键值对的形式轻松添加参数,例如 `?userId=1`。Insomnia 会自动将这些参数编码到 URL 中。
请求头(Headers)位于 **Header** 标签页,可以为请求添加如 `Authorization`、`Content-Type` 等。常见需求如设置 `Accept: application/json`,可以直接在这里配置。
## 环境变量与动态值
### 为什么要用环境变量?
开发中通常会有开发环境(dev)、测试环境(staging)和生产环境(prod),API 的 Base URL 各不相同。环境变量可以让你一键切换服务地址,而无需逐个修改每一个请求的 URL。
### 创建和使用环境
1. 点击侧边栏左上角的 **Manage Environments** 按钮(或按 `Ctrl+E` / `Cmd+E`)。
2. 新建一个环境,命名为“开发环境”,添加变量:
- `base_url` : `http://localhost:3000/api`
3. 保存后,在右上角的环境下拉菜单中选择“开发环境”。
现在,在所有请求的 URL 中,你可以使用 `{{ base_url }}/users` 来引用这个变量。切换环境时,URL 会自动变更。类似地,可以创建“测试环境”和“生产环境”并定义各自的 `base_url`。
### 内置动态值(模板标签)
Insomnia 模板标签提供了丰富的动态生成功能,让请求更加灵活。例如:
- **时间戳**:`{% timestamp 'seconds' %}` 生成当前 Unix 时间戳(秒)。
- **随机字符串**:`{% random %}` 生成一个随机的 UUID。
- **日期格式**:`{% now 'YYYY-MM-DD' %}`。
- **编码转换**:`{% base64 'encode', 'some text' %}`。
在需要动态签名、防缓存或唯一数据时,这些标签非常有用。直接将模板语法写入 URL、Headers 或 Body 中,发送请求时 Insomnia 会实时计算并替换。
## 高级请求配置
### 身份认证(Auth)
Insomnia 支持多种认证方式,点击请求上方的 **Auth** 标签页即可配置。
- **Basic Auth**:输入用户名和密码,Insomnia 自动生成 `Authorization: Basic ...` 头。
- **Bearer Token**:直接填写 Token 值,自动添加 `Authorization: Bearer <token>`。
- **OAuth 2.0**:配置授权端点、客户端凭证等,在发送请求前自动获取并刷新 Access Token,非常方便。
- **API Key**:支持将密钥放在请求头或查询参数中。
### 代码片段生成
完成请求调试后,你可能需要将请求集成到自己的代码中。点击请求按钮右侧的 **Code** 按钮,选择目标语言(如 curl、JavaScript Fetch、Python Requests、Go 等),Insomnia 会一键生成带有正确请求头、参数和请求体的代码,直接复制使用。
### 请求链与响应处理
Insomnia 支持 **Response Tag**,可以从前一个请求的响应中提取数据,用于下一个请求。例如,登录后返回的 Token 需要自动填充到后续请求中:
1. 创建一个名为“登录”的 POST 请求,成功后返回 `{ "token": "abc123" }`。
2. 在该请求的 **Header** 或 **Auth** 中使用 `{{ response '$.token' }}` 提取 JSON 路径下的值。
3. 但更推荐的做法是将提取的值存入环境变量:在请求的 **After-response** 脚本中写入:
```javascript
const response = await fetch.fromResponse();
const json = await response.json();
await vars.set('auth_token', json.token);