本案例主要说明如何使用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()]
    public string UserName { get; set; }
    public int UserAge { get; set; }
    [StringLength()]
    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、 客户端代码实现

                  UserClient app = new UserClient();
var data = app.GetAllAsync(new GetAllUserInformationDto()
{
MaxResultCount = ,
SkipCount = ,
Sorting = "desc",
UserName = "luyong"
}); //新增数据
var app2= app.CreateAsync(new CreateUserInformationDto()
{
CreationTime = DateTime.Now,
UserAddress = "china",
UserName = "fadf333",
UserAge =
}); dataGridView1.DataSource = data.Result.Items;

NSwagStudio for Swagger Api的更多相关文章

  1. 添加swagger api文档到node服务

    swagger,一款api测试工具,详细介绍参考官网:http://swagger.io/ ,这里主要记录下怎么将swagger api应用到我们的node服务中: 1.任意新建node api项目, ...

  2. Swagger API接口管理

    介绍         Swagger API框架,用于管理项目中API接口,属当前最流行的API接口管理工具. Swagger功能强大,UI界面漂亮,支持在线测试等!         Swagger包 ...

  3. swagger api 转graphql npm 包试用

    graphql 比较方便的进行api 的查询,操作,swagger 是一个方便的open api 描述标准,当前我们有比较多的 restapi 但是转换为graphql 是有成本的,还好swagger ...

  4. swagger & api & swagger ui

    swagger & api swagger ui # run server $ swagger project start api-app # call api $ curl http://1 ...

  5. Swagger API文档集中化注册管理

    接口文档是前后端开发对接时很重要的一个组件.手动编写接口文档既费时,又存在文档不能随代码及时更新的问题,因此产生了像swagger这样的自动生成接口文档的框架.swagger文档一般是随项目代码生成与 ...

  6. xadmin引入drf-yasg生成Swagger API文档

    一.安装drf-yasg: 由于django-rest-swagger已经废弃了 所以引入了drf-yasg pip install drf-yasg 安装install drf-yasg库 http ...

  7. restful swagger api java go

    rest框架使用swagger api,接口越来越多后性能会很差,如何优化? - 知乎https://www.zhihu.com/question/59349319 golang restful 框架 ...

  8. Swagger API文档

    Swagger API文档集中化注册管理   接口文档是前后端开发对接时很重要的一个组件.手动编写接口文档既费时,又存在文档不能随代码及时更新的问题,因此产生了像swagger这样的自动生成接口文档的 ...

  9. Swagger : API JSON 文件 转 PDF 问题总结

    1.  swagger API 转 PDF 具体请参考:woshihoujinxin/swagger-gendoc 2. 问题总结 接口方法值返回值为  void 类型时, @ApiOperation ...

随机推荐

  1. nodejs模块发布及命令行程序开发

    前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...

  2. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  3. winform异步加载数据到界面

    做一个学习记录. 有两个需求: 1.点击按钮,异步加载数据,不卡顿UI. 2.把获取的数据加载到gridview上面. 对于需求1,2,代码如下: public delegate void ShowD ...

  4. 利用Select2优化@Html.ListBoxFor显示,学会用MultiSelectList

    最近需要用到多选框,Asp.Net MVC自带的@Html.ListBox或@Html.ListBoxFor的显示效果太差,于是找到了Select2进行优化,并正式了解了多选框的操作方法. 首先介绍多 ...

  5. OSGi规范的C#实现开源

    这是大约在3-4年前完成的一个C#实现的OSGi框架,实现的过程参照了OSGi规范与与一些实现思路(感谢当时的那些资料与项目),此框架虽然仅在几个小型项目有过实际的应用,但OSGi的规范实现还是相对比 ...

  6. 使用Git Bash远程添加分支和简单部署你的静态页面

    新建一个分支:git branch mybranch(mybranch你的分支名字) 切换到你的新分支: git checkout mybranch 将新分支发布在github上: git push ...

  7. gulp批量打包文件并提取公共文件

    gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器. browseriyf是模块化打包工具. 一般情况下,Browserify 会把所有的模块打包成单个文件.单个文件在大多数情况下是 ...

  8. DevOps对于企业IT的价值

    其实从敏捷延展开的 DevOps 概念很早就已经被提出,不过由于配套的技术成熟度水平层次不齐, DevOps 的价值一直没有有效地发挥出来.现如今,随着容器技术的发展, DevOps 在企业中的实践难 ...

  9. Oracle使用触发器和mysql中使用触发器的比较——学习笔记

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...

  10. Python学习基础

    1.使用范围: 大数据 .图像处理.web .运维.爬虫.自动化.科学计算 2.准备环境: linux/mac python 3.5.2 ipython vim/sublime/atom 3.列表 3 ...