将swagger在线文档转为word

项目验收需要编写word版接口文档,求人不如求己,自己做一个转换程序即可。以下给个框架模板,可以自行修改。程序使用python编写,需自行脑补相关基础知识。注意该程序只适合swagger3。

复制代码
import json
import requests
import os
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

# 读取Swagger3 JSON文件 修改这个地址为要提取的网址
swagger_url = "http://172.18.33.12:9870/v3/api-docs"
response = requests.get(swagger_url)
openapi_data = response.json()

# 创建Word文档
doc = Document()

# 文档标题
title = doc.add_heading(openapi_data["info"]["title"], 0)
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# 文档信息
doc.add_paragraph(f"版本:{openapi_data['info']['version']}")
doc.add_paragraph(f"描述:{openapi_data['info'].get('description', '无')}")
doc.add_paragraph(f"服务器地址:{openapi_data['servers'][0]['url']}")

# 遍历接口路径(OpenAPI 3.0的paths结构)
paths = openapi_data["paths"]
for path, methods in paths.items():
    if path.lower().startswith("/actuator"):   # 去掉一些底层接口
        continue
    doc.add_heading(f"接口路径:{path}", level=1)
    for method, details in methods.items():
        doc.add_heading(f"请求方法:{method.upper()}", level=2)
        doc.add_paragraph(f"接口摘要:{details.get('summary', '无')}")
        doc.add_paragraph(f"接口描述:{details.get('description', '无')}")

        # 处理请求参数(OpenAPI 3.0的parameters和requestBody)
        doc.add_heading("请求参数", level=3)
        # 1. 路径/查询参数
        parameters = details.get("parameters", [])
        if parameters:
            table = doc.add_table(rows=1, cols=4)
            hdr_cells = table.rows[0].cells
            hdr_cells[0].text = "参数名"
            hdr_cells[1].text = "位置"  # path/query/header
            hdr_cells[2].text = "是否必选"
            hdr_cells[3].text = "描述"
            for param in parameters:
                row = table.add_row().cells
                row[0].text = param["name"]
                row[1].text = param["in"]
                row[2].text = "是" if param.get("required", False) else "否"
                row[3].text = param.get("description", "无")
        # 2. 请求体(OpenAPI 3.0的requestBody)
        request_body = details.get("requestBody", {})
        if request_body:
            doc.add_paragraph("请求体:")
            content = request_body.get("content", {})
            for media_type, schema in content.items():
                doc.add_paragraph(f"媒体类型:{media_type}")
                schema_info = schema.get("schema", {})
                doc.add_paragraph(f"数据结构:{json.dumps(schema_info, ensure_ascii=False, indent=2)}")

        # 处理响应
        doc.add_heading("响应信息", level=3)
        responses = details.get("responses", {})
        for code, resp in responses.items():
            doc.add_paragraph(f"状态码:{code} - {resp['description']}")
            resp_content = resp.get("content", {})
            if resp_content:
                for media_type, schema in resp_content.items():
                    doc.add_paragraph(f"响应示例({media_type}):")
                    example = schema.get("example", {})
                    doc.add_paragraph(json.dumps(example, ensure_ascii=False, indent=2))

# 保存文档
doc.save("swagger3-api-docs.docx")
print(f"Swagger3接口文档生成成功=>{os.getcwd()}\\swagger3-api-docs.docx")
相关推荐
游乐码29 分钟前
C#List
开发语言·c#·list
Meme Buoy1 小时前
11.2统一建模语言UML-事务关系图
microsoft·uml
Paine Zeng3 小时前
C# + SolidWorks 二次开发 -监听退出草图事件并自动执行逻辑
c#·solidworks二次开发·solidworks api
游乐码3 小时前
C#Dicitionary
算法·c#
SunnyDays10113 小时前
C# 实战:如何高效地将 HTML 转换为可编辑 Word 文档
c#·html转word
code小生3 小时前
微软 Microsoft Edge 浏览器插件开发者注册指南
前端·microsoft·edge·edge浏览器·浏览器插件开发者
用户3721574261354 小时前
C# 实战:如何高效地将 HTML 转换为可编辑 Word 文档
c#
weixin_416660074 小时前
从标记语言到 Word 文档:AI 生成的 Mermaid 与 LaTeX 自动化转换的技术方案解析
word·latex·数学公式·deepseek
帐篷Li4 小时前
【Vibe Coding】一口气搞懂AI黑话:Vibe Coding、Agent、提示词、MCP、Skills全解析
人工智能·microsoft
拓端研究室4 小时前
2026中国医疗健康行业趋势报告:投融资回暖、AI渗透与产业链提价|附100+份报告PDF、数据、可视化模板汇总下载
人工智能·物联网·microsoft