Dot-Net
Web API Swagger 文件導出為 PDF
根據文件(http://swagger.io/open-source-integrations/),有一些Java外掛可以將 Swagger 文件導出為 PDF,我只是看看文件,但我看不到任何關於**.NET**的內容.
我的問題是:是否有類似於 .NET 中的 Java 外掛swagger2markup、swagger2markup-gradle-plugin或其他從 WEB API 導出 PDF 文件的方式?
謝謝
我在我正在進行的項目中實施了同樣的事情。我們可以下載所有 API 的 PDF 文件。我已經使用了 Rapi-Pdf 外掛,通過它我們可以生成 swagger Json 的 PDF。它在 Dotnet 核心 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 文件。
希望這將幫助某人集成相同的功能。
