swagger文档转换为WebApiClient声明式代码
1 swagger簡介
Swagger是一個(gè)規(guī)范且完整的框架,提供描述、生產(chǎn)、消費(fèi)和可視化RESTful Web Service。其核心是使用json來規(guī)范描述RESTful接口,另外有提供UI來查看接口說明,并有一套生成不同語言的客戶端調(diào)用代碼生成器。
1.1 對(duì)Api提供者
自頂向下
使用Swagger編輯器創(chuàng)建Swagger定義,然后使用Swagger代碼生成工具生成服務(wù)器實(shí)現(xiàn)。
自底向上
為已有的REST API創(chuàng)建Swagger定義。一般的,Api提供者都會(huì)選擇這種方式,比如在asp.net里集成swagger的支持,在寫好接口代碼之后,訪問對(duì)應(yīng)的swagger的訪問Uri地址,就可以得到swagger.json。例如:http://petstore.swagger.io/v2/swagger.json
1.2 對(duì)Api使用者
使用swagger UI
一些提供者的站點(diǎn)會(huì)提供swagger ui來查看其swagger.json,例如:http://petstore.swagger.io/ 有了這些UI,自己手工編寫客戶端調(diào)用代碼也非常簡單了。
使用Swagger Codegen
可以Swagger Codegen的將swagger.json逆向生成你需要的客戶端調(diào)用接口代碼,本質(zhì)上是使用了代碼模板結(jié)合swagger.json描述來生成代碼。在.net里,有一個(gè)Nswag項(xiàng)目,可以將swagger.json生成使用HttpClient來請求接口的c#代碼。但是這些代碼的質(zhì)量也比較差,比如以下代碼的HttpClient的生命周期也就無法很好的維護(hù)。
2 WebApiClient.tools簡介
WebApiClient是.net平臺(tái)的一款RESTful聲明式的面向切面客戶端,其幾乎100%實(shí)現(xiàn)了swagger定義的規(guī)范,WebApiClient.tools.swagger旨在將swagger.json逆向生成符合WebApiClient的聲明式c#代碼。
2.1 作用
使用原生HttpClient,你可能需要20行代碼包裝調(diào)用一個(gè)接口;使用WebApiClient,你可能只需要一行代碼來定義接口方法;使用WebApiClient + WebApiClient.tools.swagger,你一行代碼都不用寫。
2.2 工作原理
使用NSwag解析json得到SwaggerDocument
使用RazorEngine將SwaggerDocument傳入cshtml模板編譯得到html
使用AngleSharp將html的文本代碼提取,得到WebApiClient的聲明式代碼
代碼美化,輸出到本地文件
2.3 樣例效果
接口代碼
模型代碼
3 相關(guān)資源
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
相關(guān)文章:
使用WebApiClient請求和管理Restful Api
net的retrofit--WebApiClient庫
.net的retrofit--WebApiClient庫深入篇
.net的retrofit--WebApiClient底層篇
WebApiClient百度地圖服務(wù)接口實(shí)踐
WebApiClient的接口輸入驗(yàn)證
WebApiClient的JsonPatch局部更新
聲明式RESTful客戶端在asp.net core中的應(yīng)用
原文地址:https://www.cnblogs.com/kewei/p/9786319.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的swagger文档转换为WebApiClient声明式代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# 弹性和瞬态故障处理库Polly 学
- 下一篇: KubeCon+CloudNativeC