Mustache模板如何实现安全选项按需换行输出?
解决Mustache模板生成安全选项时的换行问题
针对从OpenAPI生成Jetbrains HTTP Client文件时的安全选项换行需求,核心是利用Mustache的section区块渲染特性,将每个安全选项的内容和对应的换行包裹在条件区块内,确保只有当选项有效时才渲染该行内容及换行,避免空行或连写问题。
正确模板写法示例
假设你的数据模型包含以下布尔标识:isBasicAuth(基础认证有效)、isBearerAuth(Bearer令牌有效)、isApiKey(API密钥有效),对应的认证头内容分别为Authorization: Basic <credentials>、Authorization: Bearer <token>、X-API-Key: <key>,模板应这样写:
{{#isBasicAuth}}Authorization: Basic <credentials> {{/isBasicAuth}}{{#isBearerAuth}}Authorization: Bearer <token> {{/isBearerAuth}}{{#isApiKey}}X-API-Key: <key> {{/isApiKey}}
关键逻辑说明
- 换行内嵌到section内部:每个有效选项的换行符直接写在对应
{{#condition}}...{{/condition}}区块的内容末尾,只有当条件为true时,这一行内容和换行才会被渲染。 - section之间无额外空白:区块之间不要加空格或换行,避免条件为
false时残留空行。 - 适配所有边界场景:
- 0个有效选项:模板无任何输出,符合要求;
- 1个有效选项:仅渲染该行内容及换行,无多余空行;
- 多个有效选项:每个有效选项单独占一行,选项间无空行。
错误写法的问题分析
- 如果把换行写在section外部(比如
{{#isBasicAuth}}...{{/isBasicAuth}}),当条件为false时,会留下空行; - 如果把多个选项内容放在同一区块内连写,会导致所有有效选项挤在一行;
- 使用HTML的
<br>标签不符合Jetbrains HTTP Client的纯文本格式要求,会被当作普通文本解析。
内容的提问来源于stack exchange,提问作者jlengrand
相关产品推荐
相关产品推荐

