1 swagger简介

Swagger是一个规范且完整的框架,提供描述、生产、消费和可视化RESTful Web Service。其核心是使用json来规范描述RESTful接口,另外有提供UI来查看接口说明,并有一套生成不同语言的客户端调用代码生成器。

1.1 对Api提供者

自顶向下

使用Swagger编辑器创建Swagger定义,然后使用Swagger代码生成工具生成服务器实现。

自底向上

为已有的REST API创建Swagger定义。一般的,Api提供者都会选择这种方式,比如在asp.net里集成swagger的支持,在写好接口代码之后,访问对应的swagger的访问Uri地址,就可以得到swagger.json。例如:http://petstore.swagger.io/v2/swagger.json

1.2 对Api使用者

使用swagger UI

一些提供者的站点会提供swagger ui来查看其swagger.json,例如:http://petstore.swagger.io/ 有了这些UI,自己手工编写客户端调用代码也非常简单了。

使用Swagger Codegen

可以Swagger Codegen的将swagger.json逆向生成你需要的客户端调用接口代码,本质上是使用了代码模板结合swagger.json描述来生成代码。在.net里,有一个Nswag项目,可以将swagger.json生成使用HttpClient来请求接口的c#代码。但是这些代码的质量也比较差,比如以下代码的HttpClient的生命周期也就无法很好的维护。

2 WebApiClient.tools简介

WebApiClient是.net平台的一款RESTful声明式的面向切面客户端,其几乎100%实现了swagger定义的规范,WebApiClient.tools.swagger旨在将swagger.json逆向生成符合WebApiClient的声明式c#代码。

2.1 作用

使用原生HttpClient,你可能需要20行代码包装调用一个接口;使用WebApiClient,你可能只需要一行代码来定义接口方法;使用WebApiClient + WebApiClient.tools.swagger,你一行代码都不用写。

2.2 工作原理

  1. 使用NSwag解析json得到SwaggerDocument

  2. 使用RazorEngine将SwaggerDocument传入cshtml模板编译得到html

  3. 使用AngleSharp将html的文本代码提取,得到WebApiClient的声明式代码

  4. 代码美化,输出到本地文件

2.3 样例效果

接口代码

模型代码

3 相关资源

WebApiClient

github: https://github.com/dotnetcore/WebApiClient

WebApiClient.tools

github: https://github.com/xljiulang/WebApiClient.Tools

NSwag

github: https://github.com/RSuter/NSwag

RazorEngine

github: https://github.com/Antaris/RazorEngine

相关文章:

  • 使用WebApiClient请求和管理Restful Api

  • net的retrofit--WebApiClient库

  • .net的retrofit--WebApiClient库深入篇

  • .net的retrofit--WebApiClient底层篇

  • WebApiClient百度地图服务接口实践

  • WebApiClient的接口输入验证

  • WebApiClient的JsonPatch局部更新

  • 声明式RESTful客户端在asp.net core中的应用

原文地址:https://www.cnblogs.com/kewei/p/9786319.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

swagger文档转换为WebApiClient声明式代码相关推荐

  1. Word处理控件Aspose.Words功能演示:使用 C# 将 Word 文档转换为 HTML

    在各种情况下,您需要在 Web 或桌面应用程序中显示 Word 文档的内容.在这种情况下,合适的选项之一是将 Word 文档转换为HTML.为了在 .NET 应用程序中实现这一点,本文介绍了如何使用 ...

  2. 使用 Swagger 文档化和定义 RESTful API

    大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API--REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Services Descript ...

  3. Django Swagger文档库drf-spectacular

    在使用DRF的时候,通常的文档有:默认文档RestFrameWork.CoreAPI.Swagger,Swagger是最流行的API文档库,在绝大多数服务端开发中都有用到,之前我们使用了CoreAPI ...

  4. 仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf...

    第三步,使用JODConverter将office文档转换为pdf JODConverter是一个java的OpenDucument文件转换器,可以进行许多文件格式的转换,它利用 OpenOffice ...

  5. 把office文档转换为html过程中的一些坑

    之前和我们项目的团队一起酝酿了一个项目,公司的业务文档技术文档比较多,但都比较分散,虽然通过FTP或其他方式聚合起来了,但感觉还是不够方便. 另外公司每次都来新员工,新员工都需要一些培训,比较耗时,比 ...

  6. 将Doc或者Docx文档处理成html的代码逻辑;统计word中的字数,段数,句数,读取word中文档内容的代码逻辑...

    将Doc或者Docx文档处理成html的代码逻辑 下面是maven的配置代码: <!-- 文档处理所需的jar的依赖 --><dependency><groupId> ...

  7. java openoffice 打印_java调用openoffice将office系列文档转换为PDF的示例方法

    前导: 发过程中经常会使用java将office系列文档转换为PDF, 一般都使用微软提供的openoffice+jodconverter 实现转换文档. openoffice既有windows版本也 ...

  8. 将Doc或者Docx文档处理成html的代码逻辑;统计word中的字数,段数,句数,读取word中文档内容的代码逻辑

    将Doc或者Docx文档处理成html的代码逻辑 下面是maven的配置代码: <!-- 文档处理所需的jar的依赖 --><dependency><groupId> ...

  9. windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)

    一. 前言 1. 开发过程中经常会使用java将office系列文档转换为PDF, 一般都使用微软提供的openoffice+jodconverter 实现转换文档. 2. openoffice既有w ...

最新文章

  1. Android APK反编译得到Java源代码或资源文件
  2. 40个Java多线程问题详解复习
  3. kaggle數據集下載到colab上并且解压
  4. Python 两大环境管理神器:pyenv 和 virtualenv
  5. linux取设备分辨率,linux 获取系统屏幕分辨率
  6. Hystrix原理讲解
  7. 高通linux系统交叉编译,【Linux】第三章 移植开源库
  8. Tarjan-有向图
  9. Python requests库中文乱码问题汇总(编码)
  10. 计算机操作系统有哪几个管理功能,操作系统管理功能有哪几种
  11. 【NISP一级】1.4 信息安全管理
  12. word2vec教程
  13. PyTorch的自动求导机制详细解析,PyTorch的核心魔法
  14. 准备嵌入式Linux开发环境
  15. 跨模态行人重识别:Cross-Modality Person Re-Identification viaModality-Aware CollaborativeEnsemble Learning学习笔记
  16. 通达信版弘历软件指标_通达信弘历指标公式
  17. csu 1525: Algebraic Teamwork
  18. pycharm导入jieba包_一份超级完整实用的PyCharm图解教程,赶紧收藏起来
  19. 影响域名解析生效的原因有哪些?
  20. python 123 io网站答题如果最小化会有提示吗_爬虫进阶教程:百万英雄答题辅助系统...

热门文章

  1. python面试题~反射,元类,单例
  2. 用websploit获取管理员后台地址
  3. 【LINUX学习】链接文件
  4. Codeforces 474C Captain Marmot 给定4个点和各自旋转中心 问旋转成正方形的次数
  5. SUSE10下配置FTP服务
  6. 在C#中使用SQLite
  7. 加入域--深入理解DNS在域中作用
  8. IIS 7.0 的 ASP.NET 应用程序生命周期概述
  9. 完美:C# Blazor中显示Markdown并添加代码高亮
  10. 一起学习设计模式--02.简单工厂模式