博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swagger+AutoRest 生成web api客户端(.Net)
阅读量:5990 次
发布时间:2019-06-20

本文共 1285 字,大约阅读时间需要 4 分钟。

对于.net来说,用web api来构建服务是一个不错的选择,都是http请求,调用简单,但是如果真的要在程序中调用,则还有些工作要做,比如我们需要手写httpClient调用,并映射Model, 如果服务少还可以,多了就繁琐了。
关于Swagger的信息,其他博客已经有介绍,这里就不多说。 大家可以参考  ,使用Swagger后,可以解决服务没有文档或者文档和服务不同步的问题,同时Swagger自带的就有模拟请求的功能,所以可以在页面上直接测试接口。 这些不仅对开发,对测试同学也是友好的。 
下面是一个简单的Web API,添加注释
 
引用swagger后,访问http://XXX/swagger/ui/index(XXX为你的域名),结果如下,可以看到页面上会显示你的服务,以及服务的描述。
 
 点击具体某个服务,你可以看到你定义的参数,并可以直接在页面上发起测试。 
有了Swagger后,方便查看服务,接下来就是如何调用服务,过往我们通常会写一个HttpUtils的类,里面包含SendGet,SendPost两个方法,如果是简单参数还好,但是如果Get请求返回一个对象,或者Post的时候需要发送一个对象,则需要手写这些类进行封装。 这里介绍一个组件:AutoRest ( ), 简单来说,就是一个EXE工具,可以根据Swagger的结构生成服务的客户端,这个客户端可以让你像调用本地方法一样调用服务,方法内部包装了Http请求。 
在Swagger页面,你可以点击Explore按钮,通过浏览器可以看到这里返回了一个Json字符串,页面也是根据这个字符串进行的渲染,AutoRest也是根据这个结构来生成调用类。
 
选择Nuget,下载AutoRest
在solution下面找到pageage文件夹,目录如下:
在命令行里面打开 ,输入如下 AutoRest.exe -CodeGenerator CSharp -Modeler Swagger -Input http://XXX/swagger/docs/v1 -Namespace UserServiceClient, 其中Input的参数就是Swagger的Json地址,具体参数含义可以查看文档。 
执行成功后,在当前目录下会生成一个Generated目录
打开文件如下:
新建一个控制台程序,将整个文件夹copy到控制台程序下,文件夹名称可以随意定义。
 
 
 同时控制台程序需要在Nuget中引用一个Client. 
写代码,调用,同时支持同步接口和异步接口。 
至此,全部完成。 
1. 以上这种方式,可以由服务端的同学完成,然后将生成的代码,简单修改后,编译发布到公司内nuget上,其他同学可以直接到公司内nuget下载
2. 服务端同学可以只集成Swagger,然后其他同学如果要用,可以通过工具生成。 
3.
 以上仅是公司再未使用RPC前,方便服务调用的一种方式。 后面我会介绍一些.Net下的其他的服务调用方式,比如Hession,serverstack
分类:
 

转载地址:http://uxjlx.baihongyu.com/

你可能感兴趣的文章
2016年U盘启动盘制作工具哪个好用?看U盘启动盘排行榜!
查看>>
Java 面向对象 之 对象数组
查看>>
Linux学习笔记6月6日任务
查看>>
Django Meta内部类
查看>>
文件查找命令使用
查看>>
给产品经理讲讲,什么是持续交付和DevOps
查看>>
龚鹏:我是怎么从程序员成为全栈GEEK的
查看>>
Linux LVM硬盘管理及LVM扩容
查看>>
2018-1-31 Linux学习笔记
查看>>
linux根目录结构分析
查看>>
python列表的增删改查
查看>>
ZooKeeper Java API
查看>>
JEPLUS平台首页规划之激活方式与框架设计介绍——JEPLUS软件快速开发平台
查看>>
如何选用人脸识别的门禁和考勤
查看>>
内录音频工具哪个好 怎么录制电脑音频
查看>>
如何开启小米手机5的ROOT权限
查看>>
学习大数据要掌握哪些语言?需要学习哪些内容?
查看>>
数据中心的维护方法和日常管理工作
查看>>
puppet
查看>>
Java、Python 竟成区块链主流开发语言?!
查看>>