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

如何在Swagger UI中美化响应体JSON?我使用SwaggerUIBundle

在SwaggerUIBundle中美化响应体JSON的方法

当然有办法搞定这个!用SwaggerUIBundle的时候,其实有几种实用的方式让响应体的JSON自动变得整齐美观,我给你分享几个常用方案:

1. 确保后端返回正确的Content-Type

这是最基础也是最关键的一步:如果你的API返回的响应头里Content-Type不是application/json(比如是text/plain),Swagger UI大概率不会自动解析并美化JSON。

所以先检查后端接口,确保返回的响应头包含:

Content-Type: application/json

只要后端配置正确,Swagger UI默认就会把响应体的JSON格式化成带缩进、换行的美观样式。

2. 调整SwaggerUIBundle的初始化配置

如果默认美化没生效,或者你想自定义展示效果,可以在初始化SwaggerUIBundle时添加相关配置项,强制开启美化并调整展示行为:

const ui = SwaggerUIBundle({
  url: "/your-swagger-spec.json", // 你的OpenAPI规范地址
  dom_id: '#swagger-ui',
  deepLinking: true,
  // 控制API文档的展开程度,设为'full'可以默认展开所有响应
  docExpansion: 'full',
  // 设置响应体默认展开的层级,确保JSON结构清晰
  defaultModelExpandDepth: 2,
  defaultModelsExpandDepth: 2,
  // 开启扩展信息展示,不影响美化但能提升体验
  showExtensions: true,
  showCommonExtensions: true
});

这些配置能让Swagger UI默认以美化后的格式展示响应体,同时优化整体的文档展开逻辑。

3. 自定义美化逻辑(应对特殊场景)

如果后端没法修改Content-Type,或者你需要更个性化的美化规则,可以通过自定义组件来覆盖Swagger UI的默认响应渲染:

// 获取原始的响应渲染组件
const originalResponseRender = ui.getComponent('responseRender');

// 重写渲染逻辑,手动美化JSON
ui.setComponent('responseRender', (props) => {
  const { response } = props;
  // 尝试解析并格式化响应体
  if (response.body && typeof response.body === 'string') {
    try {
      const parsedJson = JSON.parse(response.body);
      // 用2个空格缩进格式化JSON
      response.body = JSON.stringify(parsedJson, null, 2);
    } catch (err) {
      // 如果不是合法JSON,保持原样
      console.warn('Response body is not valid JSON, skipping formatting');
    }
  }
  // 调用原始渲染组件展示处理后的内容
  return originalResponseRender(props);
});

这个方法能强制处理所有响应体,哪怕后端返回的是文本类型的JSON,也能自动美化。

额外小技巧

Swagger UI界面上其实自带了「Raw」按钮,点击可以切换美化后的格式和原始文本格式。如果只是偶尔需要查看美化后的内容,也可以直接用这个按钮快速切换~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:14:08