本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码、快速的访问Web Api。

NSwagStudio 下载地址 比较强大、可以生成TypeScript、WebApi Controller、CSharp Client

1、运行WebApi项目  URL http://yourserver/swagger 然后你将看到界面如下

1.1 Web API 代码

该代码使用的是Abp框架、如果不了解Abp框架的请到官网 http://www.aspnetboilerplate.com/ 了解

  • 实休代码

       public class UserInformation : Entity<int>, IHasCreationTime, IHasModificationTime{[StringLength(20)]public string UserName { get; set; }public int UserAge { get; set; }[StringLength(20)]public string UserAddress { get; set; }public UserInformation(){CreationTime = Clock.Now;}public DateTime CreationTime { get; set; }public DateTime? LastModificationTime { get; set; }}

    实体代码

  • Application 应用

     [AutoMapTo(typeof(UserInformation))]public class CreateUserInformationDto : IHasCreationTime{public string UserName { get; set; }public int UserAge { get; set; }public string UserAddress { get; set; }public DateTime CreationTime { get; set; }public CreateUserInformationDto(){CreationTime = Clock.Now;}}public class DeleteUserInformationDto : IEntityDto{public int Id { get; set; }}public class GetAllUserInformationDto : PagedAndSortedResultRequestDto, ICustomValidate{public string UserName { get; set; }public void AddValidationErrors(CustomValidationContext context){if (string.IsNullOrEmpty(UserName)){context.Results.Add(new ValidationResult("用户名称关键字不能为空!"));}}}public class GetInputUserInformatinDto : IEntityDto{public int Id { get; set; }}[AutoMapTo(typeof(UserInformation))]public class UpdateUserInformationDto : CreateUserInformationDto, IEntityDto, IHasModificationTime{public UpdateUserInformationDto(){LastModificationTime = Clock.Now;}public DateTime? LastModificationTime { get; set; }public int Id { get; set; }}public class UserInformationDto : EntityDto, IHasCreationTime, IHasModificationTime{public string UserName { get; set; }public int UserAge { get; set; }public string UserAddress { get; set; }public UserInformationDto(){CreationTime = Clock.Now;}public DateTime CreationTime { get; set; }public DateTime? LastModificationTime { get; set; }}

    Dtos

      public interface IUserAppService :ICrudAppService<UserInformationDto, int,GetAllUserInformationDto,CreateUserInformationDto,UpdateUserInformationDto,GetInputUserInformatinDto,DeleteUserInformationDto>{}public class UserAppService :CrudAppService<UserInformation,UserInformationDto, int,GetAllUserInformationDto,CreateUserInformationDto,UpdateUserInformationDto,GetInputUserInformatinDto,DeleteUserInformationDto>,IUserAppService{private ICacheManager cacheManager;public UserAppService(IRepository<UserInformation, int> repository,ICacheManager cache) : base(repository){cacheManager = cache;}protected override IQueryable<UserInformation> CreateFilteredQuery(GetAllUserInformationDto input){return base.CreateFilteredQuery(input).Where(o=>o.UserName.Contains(input.UserName));}}

    Application Service

  2、生成客户端代码 并且访问Web API

2.1 安装工具和创建测试客户端项目

  • 安装Install NSwagStudio
  • 创建一个新的c#客户端项目
  • 将所需的程序集依赖项添加到库项目中

2.2 生成代码

  • 启动 NSwagStudio 然后选择 Swagger Specification
  • 在Load Swagger Specification from URL: http://yourserver/swagger/v1/swagger.json  前期条件是服务必须期启动
  • 选择一个右边的选项卡 如:"CSharpClient"、然后点击“ Generate Outputs”
  • 复制生所的代码到你的客户端项目中
  • 同时也可以设置、如项目命名空间、以及配置输出文件路经、生成DTO的一些配置

  3、保存脚本

  • 保存文件.nswag 把当前的一些配置保存

4、 客户端代码实现

 2                 UserClient app = new UserClient();3                 var data = app.GetAllAsync(new GetAllUserInformationDto()4                 {5                     MaxResultCount = 1,6                     SkipCount = 1,7                     Sorting = "desc",8                     UserName = "luyong"9                 });
10
11                 //新增数据
12                var app2= app.CreateAsync(new CreateUserInformationDto()
13                 {
14                     CreationTime = DateTime.Now,
15                     UserAddress = "china",
16                     UserName = "fadf333",
17                     UserAge = 10
18                 });
19
20                 dataGridView1.DataSource = data.Result.Items;

转载于:https://www.cnblogs.com/w2011/p/5979708.html

NSwagStudio for Swagger Api相关推荐

  1. 怎么将swagger API导出为HTML或者PDF

    文章目录 将swagger API导出为HTML或者PDF 什么是Asciidoc swagger2markup-maven-plugin asciidoctor-maven-plugin 使用命令行 ...

  2. 集成Swagger(API)---SpringBoot

    集成Swagger(API) 学习目标: 了解Swagger的概念及作用 掌握在项目中集成Swagger自动生成API文档 Swagger简介 前后端分离 前端 -> 前端控制层.视图层 后端 ...

  3. swagger api文档_带有Swagger的Spring Rest API –创建文档

    swagger api文档 使REST API易于使用的真正关键是好的文档. 但是,即使您的文档做得很好,您也需要设置公司流程的权利以正确,及时地发布它. 确保利益相关者按时收到是一回事,但是您也要负 ...

  4. swagger api文档_带有Swagger的Spring Rest API –公开文档

    swagger api文档 创建API文档后,将其提供给涉众很重要. 在理想情况下,此发布的文档将足够灵活以解决任何最后的更改,并且易于分发(就成本以及完成此操作所需的时间而言). 为了使之成为可能, ...

  5. swagger 扫描java文档_推荐一款在运行时通过javadoc生成Swagger API文档的库

    介绍 一般,我们使用Springfox生成swagger api文档,但Springfox不支持从javadoc中生成,只能通过注解的方式标注文档. 这样,当共享一些POJO类时,为了同时生成java ...

  6. Swagger(Api接口管理)

    Swagger(Api管理) 主要应用于前后端分离的项目,实时更新最新API,降低集成风险. RestFul Api文档在线自动生成工具=>Api文档与Api定义同步更新 直接运行,可以在线测试 ...

  7. Oh my God, Swagger API文档竟然可以这样写?

    最好的总会在不经意间出现. " 作为后端程序员,免不了与前端同事对接API, 一个书写良好的API设计文档可有效提高与前端对接的效率. 为避免联调时来回撕逼,今天我们聊一聊正确编写Swaag ...

  8. binder-swagger-java v0.5.0,Swagger API 框架

    Binder-swagger-java v0.5.0 发布了,这一版的主要更新有: 增加 ref 支持增加 重用 支持更多的助手方法 注:保持了向前兼容,现有应用代码不受影响. 只要提供合适的 swa ...

  9. 使用swagger api 下载excel,excel打不开

    需求 今天有个常规的需求,先上传一个文件,然后解析文件填充些属性在下载下来,但是最后使用swagger测试的时候,发现下载的文件打开失败,说文件格式不匹配或者文件内容损坏. 通过搜索发现需要在api上 ...

最新文章

  1. SpringBoot整合JDBC、整合Druid数据源详解教程
  2. git添加user及repository
  3. JFrame中使用jpanel来布局
  4. linux忆连软件,linux安装软件方法汇总
  5. 支付宝2017年个人账单明天发布,你小心脏准备好了吗?
  6. 字符,字符串,int之间互相转换
  7. 做形态学方法的团队_图像分割实战-分水岭分割方法和GrabCut 算法
  8. window.open 与 iframe
  9. 2011-10-18 22:20 mysql 中IFNULL 、IF、CASE 语句介绍
  10. 2010年 我的齐鲁软件大赛作品
  11. ACL'22 | 使用对比学习增强多标签文本分类中的k近邻机制
  12. 在 Mac 上的 Keynote 讲演中如何更改共享演示文稿的设置?
  13. 值得投入精力的APP运营:用户、活动和数据!
  14. 智能配电房综合环境监控系统
  15. 【7gyy】教大家设置一个类似手机的锁屏界面
  16. 什么是对称加密(对称加密简介)
  17. 计算机辅助英语教学 研究背景,信息时代背景下的英语教学(原稿)
  18. matlab plot函数画线,线型和颜色
  19. HDU1042 N!
  20. cf768G The Winds of Winter 主席树

热门文章

  1. ionic中的后退方法
  2. Javascript获取页面、屏幕尺寸大小参数
  3. 替换WCF默认序列化方式
  4. C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
  5. 模型数据的保存和读取
  6. python注入_python的常见命令注入威胁
  7. 后端如何发出请求_gRPC系列(三) 如何借助HTTP2实现传输
  8. python棋盘放米循环结构_Python递归法计算棋盘上所有路径总奖品最大值(京东2016编程题)...
  9. ce变速注入dll失败_[LAB]一种无痕Dll模块注入方式
  10. 搜狗手机输入法php,在线调用搜狗云输入法