insomnia可通过五种方式实现请求模板复用:一、用环境变量(如{{ env.base_url }})适配多环境;二、用nunjucks语法(如now()、randomstring())生成动态参数;三、用文件夹结构组织模板库并导出共享;四、用响应链(context.setenvironmentvariable)传递token等上下文数据;五、用template tags(如uuid、sha256)插入高阶动态值。

如果您在Insomnia中反复构造结构相似的请求(如同一API的多个端点、不同参数组合的CRUD操作),手动复制粘贴易出错且难以维护,则可通过请求模板实现高效复用。以下是创建和使用请求模板的具体操作步骤:
一、基于环境变量构建可复用请求模板
该方法利用Insomnia的环境变量机制,在URL、Headers、Body等字段中嵌入{{ env.xxx }}占位符,使同一请求配置可在不同环境(dev/staging/prod)中自动适配目标地址与认证凭据,无需重复编辑。
1、点击右上角Environments下拉菜单旁的齿轮图标,选择Manage Environments。
2、点击+ Add Environment,输入名称如staging,并添加变量:base_url = https://api.staging.example.com、api_key = sk_stg_abc123。
3、新建一个GET请求,在URL栏输入{% raw %}{{ env.base_url }}{% endraw%}/v1/users。
4、在Headers中添加键值对:Authorization → Bearer {% raw %}{{ env.api_key }}{% endraw%}。
5、保存该请求至某个集合,后续切换环境时所有{% raw %}{{ env.xxx }}{% endraw%}将实时替换为对应值。
二、使用Nunjucks模板语法生成动态参数
该方法通过Nunjucks内置过滤器与表达式,在请求体或查询参数中生成时间戳、随机字符串、JSON序列化数据等运行时值,提升模板灵活性与真实性。
1、确认已启用Nunjucks模板功能:进入Preferences → General → 勾选Enable Nunjucks templating in request fields。
2、新建POST请求,在Body中选择JSON格式,输入以下内容:
{ "timestamp": "{{ now() | date('YYYY-MM-DD HH:mm:ss') }}", "request_id": "{{ randomString(12) }}", "data": {{ env.payload | dump | safe }} }
3、在当前环境变量中定义payload字段,例如:payload = {"user": "test", "action": "create"}。
4、发送请求时,Nunjucks将自动执行now()、randomString()等函数并注入结果。
三、通过请求集合与文件夹结构组织模板库
该方法将高频使用的请求按业务模块或资源类型归类为独立文件夹,每个文件夹代表一类模板族(如“用户管理模板”“支付回调模板”),便于团队共享与快速检索。
1、在左侧集合面板中右键点击目标工作区,选择Add Folder,命名为User Templates。
2、在该文件夹内创建多个请求,例如:GET /users(带分页参数模板)、POST /users(带预设JSON Body模板)、PATCH /users/{{ env.user_id }}(带路径变量模板)。
3、为每个请求的Name字段添加统一前缀,如【模板】GET 用户列表,便于筛选识别。
4、导出该文件夹为.yaml文件,供团队成员导入复用;导入时Insomnia会保留全部模板语法与环境依赖关系。
四、利用响应链构建上下文感知模板
该方法让后续请求自动继承前序请求的响应数据(如token、ID、临时URL),形成具备状态流转能力的请求模板链,适用于登录→操作→登出等典型流程。
1、创建第一个请求Login POST /auth/login,在Tests标签页中添加脚本:
const res = JSON.parse(response.body); context.setEnvironmentVariable("session_token", res.token); context.setEnvironmentVariable("user_id", res.user.id);
2、创建第二个请求GetProfile GET /users/{{ env.user_id }},其URL直接引用env.user_id变量。
3、创建第三个请求UpdateProfile PATCH /users/{{ env.user_id }},Headers中设置Authorization: Bearer {% raw %}{{ env.session_token }}{% endraw%}。
4、将这三个请求拖入同一文件夹并启用“Run All”功能,即可一键执行完整模板链。
五、使用Template Tags插入高阶动态值
该方法调用Insomnia内置的Template Tags(如uuid、sha256、base64等),在不依赖外部环境变量的前提下,于任意请求字段中生成加密哈希、唯一标识符或编码后的内容,增强模板安全性与通用性。
1、新建一个GET请求,在Query Params中添加参数signature,值设为{% raw %}{{ sha256('secret' + now() | date('YYYYMMDD')) }}{% endraw%}。
2、在Headers中添加X-Request-ID,值设为{% raw %}{{ uuid() }}{% endraw%}。
3、在Body中使用{% raw %}{{ base64('hello world') }}{% endraw%}生成Base64编码字符串。
4、确保已启用Nunjucks模板功能,所有Tag将在每次发送前重新计算,保证值的时效性与唯一性。











