简介

对于.net来说,用web api来构建服务是一个不错的选择,都是http请求,调用简单,但是如果真的要在程序中调用,则还有些工作要做,比如我们需要手写httpClient调用,并映射Model, 如果服务少还可以,多了就繁琐了。

Swagger

关于Swagger的信息,其他博客已经有介绍,这里就不多说。 大家可以参考http://chuansong.me/n/322685748559 ,使用Swagger后,可以解决服务没有文档或者文档和服务不同步的问题,同时Swagger自带的就有模拟请求的功能,所以可以在页面上直接测试接口。 这些不仅对开发,对测试同学也是友好的。 
下面是一个简单的Web API,添加注释
引用swagger后,访问http://XXX/swagger/ui/index(XXX为你的域名),结果如下,可以看到页面上会显示你的服务,以及服务的描述。
点击具体某个服务,你可以看到你定义的参数,并可以直接在页面上发起测试。 

AutoRest

有了Swagger后,方便查看服务,接下来就是如何调用服务,过往我们通常会写一个HttpUtils的类,里面包含SendGet,SendPost两个方法,如果是简单参数还好,但是如果Get请求返回一个对象,或者Post的时候需要发送一个对象,则需要手写这些类进行封装。 这里介绍一个组件:AutoRest (https://github.com/Azure/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
分类: 服务调用

Swagger+AutoRest 生成web api客户端(.Net)相关推荐

  1. 使用 Source Generator 自动生成 WEB API

    使用 Source Generator 自动生成 WEB API Intro 上次我们介绍了使用 Source Generator 的应用,有小伙伴留言说想要自动生成一套 ABP 相关的东西,我对 A ...

  2. SpringBoot整合Swagger 自动生成在线API文档 偷懒必备 同时也是我们的基本操作啦!!!

    不知道哦昨天的七夕过的咋样,总之我就是在这new GirlFriend().在那netw GirlFriend(),就这样度过了一天.

  3. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

  4. 使用Entity Framework Core,Swagger和Postman创建ASP.NET Core Web API的分步指南

    目录 介绍 背景 第1步:创建一个新项目 第2步:添加模型类 第3步:使用Entity Framework Core 第4步:添加数据库上下文和控制器 步骤5:在Package Manager控制台中 ...

  5. android 调用 asp.net web api,从 .NET 客户端调用 Web API (C#)

    从 .NET 客户端调用 Web API (C#) 11/24/2017 本文内容 此内容适用于以前版本的 .NET. 新开发应该使用 ASP.NET Core. 有关使用 Core Web API ...

  6. Entity Framework 6 Recipes 2nd Edition(9-1)译-用Web Api更新单独分离的实体

    第九章 在N层结构的应用程序中使用EF 不是所有的应用都能完全地写入到一个单个的过程中(就是驻留在一个单一的物理层中),实际上,在当今不断发展的网络世界,大量的应用程序的结构包含经典的表现层,应用程, ...

  7. 1.1ASP.NET Web API 2入门

    HTTP 不只是为了生成 web 页面.它也是建立公开服务和数据的 Api 的强大平台.HTTP 是简单的. 灵活的和无处不在.你能想到的几乎任何平台有 HTTP 库,因此,HTTP 服务可以达到范围 ...

  8. 【译】使用Jwt身份认证保护 Asp.Net Core Web Api

    原文出自Rui Figueiredo的博客,原文链接<Secure a Web Api in ASP.NET Core> 摘要:这篇文章阐述了如何使用 Json Web Token (Jw ...

  9. abp构建Web API服务

    构建动态Web API控制器 ABP可以自动地为应用层生成Web API 层.比如说我们之前创建的应用层: namespace Noah.ChargeStation.Application.Citie ...

最新文章

  1. iMeta期刊顾问James M Tiedje当选中国科学院外籍院士
  2. linux python matplotlib 使用,关于Linux:如何在Python的matplotlib中设置“后端”?
  3. Android Telephony分析(四) ---- TelephonyManager详解
  4. 中国约量子计算机啥水平,中国科学家捕获马约拉纳费米子 或敲开量子计算机世界大门...
  5. mysql jar jdk1.6_搭建非安装版mysql+jdk1.6+tomcat6
  6. java工作笔记020---Java中的关键字 transient
  7. 在Windows宿主机中ssh连接虚拟机CentOS中的Docker容器
  8. python难学吗-python语言好学吗
  9. linux设置程序开机自启动
  10. 数据分析模型 第六章
  11. 2018年物联网趋势
  12. 在ARCGIS中画一幅高程地图、地形图
  13. uClinux on Blackfin BF533 STAMP - A DSP Linux Port
  14. 英语词汇 talk down to 的中英翻译解释和例子
  15. 【软考-软件设计师精华知识点笔记】第八章 算法分析设计
  16. endnote中CWYW无文件_文献管理工具(三):EndNote 操作指南(免费在线版)
  17. python re findall 再次应用
  18. Unity3d菜鸟入门的学习路线--笔记1
  19. Vulkan的基本概念:如何使用Vulkan绘制三角形?
  20. 编解码版税royalty和授权费license fee

热门文章

  1. python中utf-8是什么意思_python中Unicode和UTF-8的区别
  2. android 模块不编译错误,Android 编译出错版本匹配问题解决办法
  3. Java设计模式(十六):生成器设计模式
  4. Linux7如何手动建库,Centos 7系列删除数据库并重新安装
  5. [BZOJ 2555] SubString
  6. Lumen、Laravel开发问题记录
  7. Mycat探索之旅(3)----Mycat的全局序列号
  8. iOS imageNamed 的缓存问题
  9. 关于不能够精确的对浮点数进行运算的问题
  10. ubuntu20.04安装noetic版本ros