Web API Swagger 文档导出为 PDF

2024-03-07

根据文档(http://swagger.io/open-source-integrations/ http://swagger.io/open-source-integrations/) 有插件Java to 将 Swagger 文档导出为 PDF,我只是看了一下文档,但我看不到任何有关.NET.

我的问题是:有没有类似Java Plugin的东西swagger2markup, swagger2markup-gradle-插件.NET 或其他方式从 WEB API 导出 PDF 文档?

thanks


我在正在进行的项目中实施了同样的事情。我们可以下载所有API的PDF文档。我已经使用 Rapi-Pdf 插件完成了,通过它我们可以生成 swagger Json 的 PDF。它位于 Dotnet core 2.1 中。

这是我的下面的代码,我们需要在startup.cs文件中配置它。

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseStaticFiles();
        app.UseSwagger();
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint(Configuration["Swagger:swaggerurl"], Configuration["Swagger:swaggertitle"]);
            c.InjectJavascript("/swagger-ui/custom.js");
            c.InjectJavascript("/swagger-ui/rapipdf-min.js");
        });

        if (env.IsDevelopment())
        {
            _logger.LogInformation("Configuring for Development environment");
            app.UseDeveloperExceptionPage();
        }
        else
        {
            _logger.LogInformation("Configuring for Production environment");
            app.UseHsts();
        }
        app.UseAuthentication();
        app.UseMiddleware<ErrorHandlerMiddleware>();
        //removed middleware to handle token, now changed with policies and auth schemes
        //app.UseMiddleware<TokenManagerMiddleware>();
        app.UseHttpsRedirection();
        app.UseMvc();
    }

在上面的代码中,我们需要理解的是,我们必须注入两个js文件,一个是自定义js,另一个是插件,因此它将添加到Swagger UI索引页面的head部分。

这是我的下面的代码,位于 Custom.js 中

window.addEventListener("load", function () {
        customizeSwaggerUI();
    });
function customizeSwaggerUI() {
    setTimeout(function () {        
        var tag = '<rapi-pdf style="display:none" id="thedoc"> </rapi-pdf>';
        var btn = '<button id="btn" style="font-size:16px;padding: 6px 16px;text-align: center;white-space: nowrap;background-color: orangered;color: white;border: 0px solid #333;cursor: pointer;" type="button" onclick="downloadPDF()">Download API Document </button>';
        var oldhtml = document.getElementsByClassName('info')[0].innerHTML;
        document.getElementsByClassName('info')[0].innerHTML = oldhtml + '</br>' + tag + '</br>' + btn;
    }, 1200);
}
function downloadPDF() {
    var client = new XMLHttpRequest();
    client.overrideMimeType("application/json");
    client.open('GET', 'v1/swagger.json');
    var jsonAPI = "";
    client.onreadystatechange = function () {
        if (client.responseText != 'undefined' && client.responseText != "") {
            jsonAPI = client.responseText;
            if (jsonAPI != "") {
                let docEl = document.getElementById("thedoc");
                var key = jsonAPI.replace('\"Authorization: Bearer {token}\"', "");
                let objSpec = JSON.parse(key);
                docEl.generatePdf(objSpec);
            }
        }
    }
    client.send();   
}

就是这样。现在您可以下载 PDF 格式的 API 文档。

希望这将帮助某人集成相同类型的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web API Swagger 文档导出为 PDF 的相关文章

随机推荐

  • VS 2013可以安装在Server 2003 R2上吗

    我可以在 Windows Server 2003 R2 上安装 Visual Studio 2013 吗 根据 Visual Studio 2013系统要求 http www visualstudio com en us products
  • 我该如何将 HOME 键绑定为 tmux 前缀?

    有没有办法在 tmux conf 中执行此操作 如果其他一切都配置正确 那么应该很简单 只需将其放入您的 tmux conf set option g prefix Home 注意 除非您手动 获取 您的 tmux conf 对文件的更改仅
  • 在 JavaScript 中提升变量

    据我了解 变量提升是在 Java 脚本中完成的 我无法理解为什么它输出为未定义 do something var foo 2 console log foo do something it prints 2 do something con
  • MVC 5 Bootstrap 模式不起作用

    我仍处于 MVC 学习模式 我需要的一件事是删除确认模式 我想使用 Bootstrap 来做到这一点 我四处搜索并想出了一些例子 我已经看过几次了 但我似乎无法让它发挥作用 我确保已下载最新版本的 Bootstap v3 3 5 并将其保存
  • 根据 SDK 级别忽略 Android 单元测试

    是否有注释或其他方便的方法来忽略特定 Android SDK 版本的 junit 测试 有没有类似Lint注解TargetApi x 的东西 或者我是否必须手动检查是否使用 Build VERSION 运行测试 我认为还没有准备好 但为此创
  • 如何使用 DispatchGroup 在 for 循环内进行异步调用

    在下面的示例代码中 我调用complete false 失败时 但是 由于我使用的是DispatchGroup对象来确保所有异步请求都完成 我不能只调用syncGroup leave 失败时 作为notify将被调用 其中包含complet
  • WooCommerce:获取并设置送货和帐单地址的邮政编码

    如何在 woocommerce 中设置 获取邮政编码 Zip code 有这个功能吗 即 我可以通过任何函数设置邮政编码吗 我还想知道 如果用户未登录 如何用我的数据 例如 546621 填充此字段 您可以执行以下操作来获取 设置帐单 运输
  • 带光标的可扩展列表视图

    我想制作一个可扩展的列表视图 但适配器将光标作为输入而不是数组列表 我想在崩溃时实现动画 https github com idunnololz AnimatedExpandableListView https github com idu
  • 是否可以禁用 cdkDrag 子元素上的拖动?

    我正在使用 Angular Material 中的 Angular CDK 拖放 请参阅文档here https material angular io cdk drag drop overview 我想知道是否有可能禁用在子元素上拖动cd
  • Django Rest框架-无法序列化查询集

    我尝试序列化查询集 def do self reservations Reservation objects all serializer ReservationSerializer data reservations many True
  • golang 类型映射的匿名字段

    我想我可以通过使用匿名字段来创建有序的地图类型 type customMap struct map string string ordered string 我可以在哪里参考地图customMapInstance key 并迭代ordere
  • Docker-swarm >> 无法连接到 docker 引擎端点

    docker version 1 9 1 swarm version 1 0 1 为什么要将 3 个虚拟机 桥接网络 连接到 swarm docker info 显示所有节点 状态待定 3 个主机中的 1 个是manager所有输出均来自该
  • 确定 JavaScript 属性是否定义了 getter 或 setter?

    给定一个对象和属性名称 是否可以确定该属性是使用 getter 还是 setter 定义的 还是完全透明的 如果属性上尚未定义 getter setter 我只想定义一个 getter setter 我需要它在 WebKit Firefox
  • Git init --bare - 不在工作树上工作

    我正在按照这里的例子http wiki dreamhost com Git http wiki dreamhost com Git 基本上我想创建一个 git 存储库 我可以从桌面推送到服务器上 在主机上 host mkdir projec
  • UILocalNotification:播放保存在文档目录中的自定义音频文件

    目前我正在创建一个警报应用程序 它可以从服务器播放自定义音频剪辑 我的实现计划是在本地保存所有音频剪辑 然后相应地设置 soundName 但我有一些问题 目前 我在将音频文件保存在捆绑目录中时遇到问题 只能将文件保存在文档目录中 是否可以
  • 相当于ORACLE在mysql中的并行查询

    mysql中有没有与ORACLE相同的并行查询的等效方法 甲骨文之道 select FULL emp PARALLEL emp 35 emp name from emp 在mysql中 完整 emp 并行 emp 35 将被视为评论 MyS
  • 在 Java 中嵌入 XQuery

    我需要从 Java 中的 MusicXML xml 文件中检索一些详细信息 我设法用java读取xml文件 但通过网络服务 当我运行代码时我必须在线 连接到互联网 我遇到了 XQuery 您可以轻松地从 XML 文件中提取信息 但我需要在j
  • GNU 制定通配符替代方案吗?

    我想选择目录中的所有文件 但使用 FreeBSD 的 make 在 GNU 中 使这种方法有效 FILES wildcard c 我使用的是 FreeBSD 的 make 而不是 GNU make 所以我正在寻找可以在 FreeBSD 的
  • 从 DOM 中删除同级元素时创建块元素的平滑过渡

    我有一个容器 其工作方式类似于 mac os 中的通知 元素被添加到队列中 并在一定的超时后被删除 这很有效 但有一个不和谐的视觉副作用 当它们从 DOM 中删除时 UI 会出现锯齿状更新 因为堆栈中的下一个元素会填充前一个元素创建的空白
  • Web API Swagger 文档导出为 PDF

    根据文档 http swagger io open source integrations http swagger io open source integrations 有插件Java to 将 Swagger 文档导出为 PDF 我只