You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swagger UI中点击Execute按钮后如何在新窗口打开响应?

解决Swagger UI点击Execute后在新窗口打开HTML响应的问题

嘿,你留意到的newWindow变量确实就是实现这个功能的关键!虽然官方文档没把这个参数的说明写得很显眼,但实际用下来完全能满足你的需求,我给你两种解决方案:

1. 全局开启新窗口打开响应

如果你希望所有符合条件的响应(比如HTML、二进制文件等)都在新窗口打开,直接在初始化Swagger UI的时候加上newWindow: true配置就行:

const ui = SwaggerUIBundle({
  url: "你的API文档地址.yaml",
  dom_id: '#swagger-ui',
  deepLinking: true,
  newWindow: true, // 开启这个参数就搞定了
  // 其他你需要的配置项...
});

设置之后,当你点击Execute按钮,返回的HTML响应会自动在新标签页打开,直接就能以网页形式查看内容了。

2. 针对特定接口自定义处理

要是你只想让返回HTML的接口生效,不想全局改变所有响应的展示方式,可以用responseInterceptor来做针对性处理:

const ui = SwaggerUIBundle({
  // 基础配置...
  responseInterceptor: (response) => {
    // 判断响应是否为HTML类型
    if (response.headers['content-type']?.includes('text/html')) {
      // 将响应内容转为Blob,创建临时URL后在新窗口打开
      const htmlBlob = new Blob([response.data], { type: 'text/html' });
      const tempUrl = URL.createObjectURL(htmlBlob);
      window.open(tempUrl, '_blank');
      // 可以给原Swagger UI的响应区域加个提示
      response.data = '<div style="padding:1rem;">HTML响应已在新窗口打开 ✅</div>';
    }
    return response;
  }
});

这种方式更灵活,只会对返回HTML的接口触发新窗口打开逻辑,其他接口还是正常在Swagger UI内展示响应内容。

简单说,newWindow是Swagger UI内部用来控制非结构化响应展示方式的参数,设为true后就会自动把这类响应转到新窗口,刚好匹配你的场景。

内容的提问来源于stack exchange,提问作者Miguel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:37:34