insomnia通过nunjucks模板引擎实现动态请求:需启用模板功能、定义环境变量,再在url、headers、json body中使用{{ env.xxx }}、过滤器及控制结构渲染参数。

如果您在Insomnia中需要根据环境或运行时数据动态构造请求参数、URL或请求体,则需借助其内置的Nunjucks模板引擎能力。以下是实现变量模板动态请求的具体操作步骤:
一、启用Nunjucks模板引擎
Insomnia默认启用Nunjucks模板支持,但需确认当前工作区已开启模板渲染功能。该功能允许在URL、Headers、Body等字段中使用{{ }}语法插入变量表达式。
1、点击左上角菜单栏中的Insomnia → Preferences(偏好设置)。
2、在弹出窗口中切换至General(常规)选项卡。
3、勾选Enable Nunjucks templating in request fields复选框。
4、关闭设置窗口,重启Insomnia使配置生效(部分版本需重启)。
二、定义环境变量并注入上下文
模板中引用的变量必须来自环境(Environment)或全局上下文,Insomnia通过环境对象提供可被{{ env.xxx }}访问的键值对。
1、点击右上角Environments(环境)下拉菜单旁的齿轮图标。
2、选择Manage Environments,进入环境管理界面。
3、点击+ Add Environment,输入名称如dev。
4、在变量列表中添加条目:base_url = https://api.example.dev、auth_token = abc123xyz。
5、保存后,在请求编辑页右上角环境下拉框中选择该环境。
三、在URL中使用变量模板
URL字段支持Nunjucks语法,可用于拼接路径、查询参数或子域名,提升多环境适配效率。
1、新建一个GET请求,URL栏输入:{{ env.base_url }}/v1/users?limit={{ env.limit | default(10) }}。
2、确保当前环境已定义limit变量;若未定义,则default(10)过滤器将回退为数值10。
3、发送请求前,Insomnia自动解析并渲染为实际URL,例如:https://api.example.dev/v1/users?limit=10。
四、在请求头中动态注入认证信息
利用变量与过滤器组合,可在Headers区域安全注入Token或时间戳等动态值,避免硬编码敏感信息。
1、在Headers面板中新增一行:Authorization → Bearer {{ env.auth_token }}。
2、再添加一行:X-Request-Time → {{ now() | date('YYYY-MM-DD HH:mm:ss') }}。
3、注意:now()是Insomnia内置函数,date为Nunjucks过滤器,二者配合生成格式化时间戳。
五、在JSON请求体中使用条件与循环
当请求体为JSON格式时,可结合{% if %}、{% for %}等Nunjucks控制结构生成差异化负载。
1、将Body类型设为JSON。
2、输入以下内容:
{% if env.include_metadata %}{"metadata": {"env": "{{ env.name }}", "timestamp": "{{ now() | date('unix') }}"}}{% endif %}
{"user_id": "{{ env.user_id }}", "active": {{ env.is_active | lower }} }
3、确保环境变量include_metadata为布尔值,is_active为字符串"True"或"False",经lower过滤后转为小写JSON布尔字面量。











