基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (番外篇)

前言

  回顾之前的两篇Swagger做Api接口文档,我们大体上学会了如何在net core3.1的项目基础上,搭建一套自动生产API接口说明文档的框架。

  本来在Swagger的基础上,前后端开发人员在开发生产期间,可以借此进行更加便捷的沟通交流。可是总有些时候,遇到一些难缠的,又不讲道理,偏偏觉得将Swagger文档地址丢给客户会不够正式!死活要一份word文档。 

   

  可是这个时候,如果接口数量上百个,甚至更多,一个一个手动输入word,那将是一笔耗时的工作。但却有什么办法可以解决呢?  

  对了,利用Swagge生成的Json文件转换为word文档不就可以了吗?

思路

  1. 获取Swagger接口文档的Json文件

  2. 解析Json文件数据填充到Html的表格中

  3.根据生成的html转work文档

模板

   文档模板


URL

/api/Movie/AddMovie

请求方式

Post

参数名

参数类型

是否必填

说明

id

Query

False

影视ID

Name

Query

False

电影名称

Type

Query

False

电影类型

状态码

说明

200

Success

示例

请求参数


返回值


开始

一、根据Swagger版本获取Json数据

1.通过Swagger源码文件可以看到

 可以拿到swagger生成的文档数据,所以我们可以新建一个控制器SwaggerController.cs,     

2. 在Startup.cs文件中,利用net core的ioc容器,注入SwaggerGenerator实例化,这样在后面的调用中可以直接使用这个方法

   services.AddScoped<SwaggerGenerator>(); //注入SwaggerGenerator,后面可以直接使用这个方法

二、文件数据填充到Html的表格中

根据上面获取的model文件数据,这个时候,我们利用Razor文件,结合html的table模板,将数据遍历填充到页面中,生成完整的页面

Html模板

将数据遍历到静态页面中,

三、根据生成的html转work文档    

四、最终效果

将html转换为word后,我们就可以看到带有 .doc 的效果了!差不多是如下效果

总结

  1. 到这基本就结束了,通过简易的几个接口的方式,展示了如何通过将Swagger接口文档生成word文档。可以根据自己的html模板生成各式的word样式文档说明。

  2.写这篇番外主要是因为之前介绍了关于如何使用Swagger生成在线文档,但实际工作中,可能也会遇到这种要各种正式word文档的客户,所以在此分享一些想法和思路,同时希望大家不吝指教。

  3.后续还会不断修改和完善,可以更多的生成不同的文件类型和按需生成不同版本的接口文档,持续更新。。。

  4 .注:搜索关注公众号【DotNet技术谷】--回复【文档生成器】,可获取本篇Swagger转换work文件

  5. 参考资料:Spire.Doc文件 、Swagger开源地址

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[EDA] 第1章 EDA技术概述-潘松版

第1章 EDA技术概述 知识点&#xff1a; 1.1 EDA技术及其发展 名称概念&#xff1a; EDA&#xff1a;Electronic Design Automation&#xff0c;即电子设计自动化&#xff0c;是指是以计算机为平台&#xff0c;使用通用软件包&#xff0c;开展电子电路设计、电子电路仿真、PCB设…

lua实现stack(lua程序设计21.7 练习21.1题)

lua实现stack&#xff08;lua程序设计21.7 练习21.1题&#xff09; Stack {} function Stack:new(o)o o or {}self.__index selfsetmetatable(o,self)return o end function Stack:push(v)table.insert(self,v) end function Stack:pop()local v self[#self]table.remove(…

遵守这些原则让你开发效率提高一倍

一、概述在园子里面有很多关于各种技术细节的研究文章&#xff0c;都是比较牛逼的框架研究&#xff1b;但是一直没有看到关于怎么样提高开发效率的文章&#xff0c;大多提高开发效率的文章都是关于自动化等方面的辅助工具类型的&#xff0c;而不是开发中的一些小技巧&#xff1…

[EDA] 2.2 简单PLD结构原理-潘松版

2.2 简单PLD结构原理 知识点&#xff1a; 2.1 PLD概述 名称概念&#xff1a; PLD&#xff1a;Programmable Logic Device&#xff0c;可编程器件 PLD的分类&#xff1a;1、按集成度分&#xff0c;可分为简单PLD和复杂PLD&#xff1b;2、按器件结构分类&#xff0c;可分为 “乘…

lua实现继承(lua程序设计21.7 练习21.2题)

lua实现继承&#xff08;lua程序设计21.7 练习21.2题&#xff09; StackQueue Stack:new() function StackQueue:insertBottom(v)table.insert(self,1,v) endlocal stack2 StackQueue:new() for i 1, 10 dostack2:push(i) end stack2:insertBottom(11)while not stack2:ise…

【复杂系统迁移 .NET Core平台系列】之调度服务改造

源宝导读&#xff1a;微软跨平台技术框架—.NET Core已经日趋成熟&#xff0c;已经具备了支撑大型系统稳定运行的条件。本文将介绍明源云ERP平台从.NET Framework向.NET Core迁移过程中的实践经验。一、背景随着ERP的产品线越来越多&#xff0c;业务关联也日益复杂&#xff0c;…

C++实现AOE网中的关键路径算法及机动时间计算算法(邻接表存储)

代码如下: #include <iostream> #include <stack> using namespace std; const int N 100;typedef struct Node {int adj;int w;Node *next;}Node;typedef struct VNode {int in;int v;Node *first;VNode(){first nullptr;} }VNode;class AOE { private:VNode a…

使用对偶表示重新实现Stack(lua程序设计21.7练习21.3题)

使用对偶表示重新实现Stack&#xff08;lua程序设计21.7练习21.3题&#xff09; local data {} DualStack {} function DualStack:new(o)o o or {}self.__index selfsetmetatable(o,self)data[o] {}return o end function DualStack:push(v)table.insert(data[self],v) en…

.NET 开源项目 StreamJsonRpc 介绍[中篇]

阅读本文大概需要 11 分钟。上一篇介绍了一些预备知识&#xff0c;包括 JSON-RPC 介绍和实现了 JSON-RPC 的 StreamJsonRpc 介绍&#xff0c;讲到了 StreamJsonRpc 可以通过 .NET 的 Stream 类和 WebSocket 类实现 JSON-RPC 协议的通信。本篇就先选择其中的 Stream 类来讲解&am…

用空代理实现account(lua程序设计21.7练习21.4题)

用空代理实现account&#xff08;lua程序设计21.7练习21.4题&#xff09; function createAccount()local proxy {}local mt {balance 0}mt.withdraw function(v) mt.balance mt.balance - v endmt.deposit function(v) mt.balance mt.balance v endmt.getBalance fu…

Istio 中的多集群部署与管理

本文节选自ServiceMesher 社区出品的开源电子书《Istio Handbook——Istio 服务网格进阶实战》&#xff0c;作者钟华&#xff0c;来自腾讯云。Istio 在 1.1 后提供了两类多集群的连通的部署模式&#xff1a;1. 多控制面2. 单控制面&#xff0c;也称为 “共享控制面” 模式多控制…

lua URL解码

lua URL解码 local function unescape(s)s string.gsub(s,""," ")s string.gsub(s,"%%(%x%x)",function(h)return string.char(tonumber(h,16))end)return s endlocal cgi {} local function decode(s)for name,value in string.gmatch(s,&q…

认证授权方案之授权初识

1.前言回顾&#xff1a;认证授权方案之JwtBearer认证在上一篇中&#xff0c;我们通过JwtBearer的方式认证&#xff0c;了解在认证时&#xff0c;都是基于Claim的&#xff0c;因此我们可以通过用户令牌获取到用户的Claims&#xff0c;在授权过程中对这些Claims进行验证&#xff…

[数据结构]树、森林与二叉树之间的相互转换方法

树、二叉树与森林的相互转换 本文只给出树、森林与二叉树之间的转换方法&#xff0c;而详细的证明过程不在本文讨论范围之内。 树 → 二叉树 在所有兄弟结点之间加一连线。 对每个结点&#xff0c;除了保留与其长子的连线外&#xff0c;去掉该结点与其它孩子的连线。 二叉树 …

lua split实现(lua程序设计10.6练习10.1题)

lua split实现&#xff08;lua程序设计10.6练习10.1题&#xff09; local function split(s,sp)local t {}local last 1local irepeati string.find(s,sp,last,true)if i thenif i ~ last thent[#t1] string.sub(s,last,i-1)endlast i1elseif last < #s thent[#t1] s…

Blazor.Server以正确的方式集成Ids4

&#xff08;一个真正的以后端形式来集成认证中心的方案&#xff09;❤本文导读首先特别感谢张善友老师提供技术指导&#xff0c;源于上周我发了一篇文章《[Mvp.Blazor] 集成Ids4&#xff0c;实现统一授权认证》&#xff0c;我本来是想通过像vue框架那样&#xff0c;通过引oidc…

lua transliterate实现(lua程序设计10.6练习10.3题)

lua transliterate实现&#xff08;lua程序设计10.6练习10.3题&#xff09; local function transliterate(s,t)return (string.gsub(s,"%a",function(a)if t[a] false thenreturn ""elseif t[a] thenreturn t[a]endend)) endlocal s "hello world…

作为一个有理想的程序员,必读的书都有哪些?

很多程序员朋友问我&#xff1a;“哪本最具影响力的书&#xff0c;是每个程序员都应该读的&#xff1f;” 笔者从事软件开发15年&#xff0c;看过的计算机相关的书籍不下百本了&#xff0c;如果非要推荐的话&#xff0c;给大家精选以下10本&#xff0c;希望对大家有所帮助&…