首页 > NSwagStudio for Swagger Api

NSwagStudio for Swagger Api

本案例主要说明如何使用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 :ICrudAppServiceint,GetAllUserInformationDto,CreateUserInformationDto,UpdateUserInformationDto,GetInputUserInformatinDto,DeleteUserInformationDto>{}public class UserAppService :CrudAppService<UserInformation,UserInformationDto, int,GetAllUserInformationDto,CreateUserInformationDto,UpdateUserInformationDto,GetInputUserInformatinDto,DeleteUserInformationDto>,IUserAppService{private ICacheManager cacheManager;public UserAppService(IRepositoryint> repository,ICacheManager cache) : base(repository){cacheManager = cache;}protected override IQueryable 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

更多相关:

  • 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?1、在Startup类中读取json配置文件1、使用Confi...

  •   1 public class FrameSubject extends JFrame {   2    3   …………..   4    5   //因为无法使用多重继承,这儿就只能使用对象组合的方式来引入一个   6    7   //java.util.Observerable对象了。   8    9   DateSub...

  •   在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性.   ModelState 在ApiController中一个ModelState属性用来获取参数验证结果.   public abstract class ApiController : IHttpController,...

  • 1# 引用  C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.dll C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.Applicati...

  • 1. set的初始化 set可以这样初始化 set iset{ 1,2,3 }; set iset2 = { 1,2,3 }; 在初始化set的时候,若出现重复的元素 set iset3{ 1,2,3,3,3 }; set iset4 = { 1,2,3,3,3 };...

  •     Set 对象存储的值总是唯一的 Set 对象方法 方法描述add添加某个值,返回Set对象本身。clear删除所有的键/值对,没有返回值。delete删除某个键,返回true。如果删除失败,返回false。forEach对每个元素执行指定操作。has返回一个布尔值,表示某个键是否在当前 Set 对象之中。 Set 对象...

  • 我现在的vimrc配置文件 runtime! debian.vim "设置编码 set encoding=utf-8 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 set fileencodings=utf-8,ucs-bom,chinese"语言设置...

  • ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题。所以我很是天真的就以为要用集合做,结果发现网上都是用数组简单明了地实现了,显得我的代码,特么地超级恶心!!!!!!! 在这里存档一下,别人就不要看了...

  • USE [svnhost]GO/****** 对象:  StoredProcedure [dbo].[up_Page2005]    脚本日期: 05/21/2008 11:27:05 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE proc [dbo].[up_P...

  • 下面介绍在Linux上利用python获取本机ip的方法. 经过网上调查, 发现大致有两种方法, 一种是调用shell脚本,另一种是利用python中的socket等模块来得到,下面是这两种方法的源码: #!/usr/bin/env python #encoding: utf-8 #description: get local...

  • python 2.7.6urllib:发送报文并得到responseBeautifulSoup:解析报文的body(html)#encoding=UTF-8 from bs4 import BeautifulSoup from urllib import urlopen import urlliblist_no_results=[]...