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()]
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的更多相关文章
- 添加swagger api文档到node服务
swagger,一款api测试工具,详细介绍参考官网:http://swagger.io/ ,这里主要记录下怎么将swagger api应用到我们的node服务中: 1.任意新建node api项目, ...
- Swagger API接口管理
介绍 Swagger API框架,用于管理项目中API接口,属当前最流行的API接口管理工具. Swagger功能强大,UI界面漂亮,支持在线测试等! Swagger包 ...
- swagger api 转graphql npm 包试用
graphql 比较方便的进行api 的查询,操作,swagger 是一个方便的open api 描述标准,当前我们有比较多的 restapi 但是转换为graphql 是有成本的,还好swagger ...
- swagger & api & swagger ui
swagger & api swagger ui # run server $ swagger project start api-app # call api $ curl http://1 ...
- Swagger API文档集中化注册管理
接口文档是前后端开发对接时很重要的一个组件.手动编写接口文档既费时,又存在文档不能随代码及时更新的问题,因此产生了像swagger这样的自动生成接口文档的框架.swagger文档一般是随项目代码生成与 ...
- xadmin引入drf-yasg生成Swagger API文档
一.安装drf-yasg: 由于django-rest-swagger已经废弃了 所以引入了drf-yasg pip install drf-yasg 安装install drf-yasg库 http ...
- restful swagger api java go
rest框架使用swagger api,接口越来越多后性能会很差,如何优化? - 知乎https://www.zhihu.com/question/59349319 golang restful 框架 ...
- Swagger API文档
Swagger API文档集中化注册管理 接口文档是前后端开发对接时很重要的一个组件.手动编写接口文档既费时,又存在文档不能随代码及时更新的问题,因此产生了像swagger这样的自动生成接口文档的 ...
- Swagger : API JSON 文件 转 PDF 问题总结
1. swagger API 转 PDF 具体请参考:woshihoujinxin/swagger-gendoc 2. 问题总结 接口方法值返回值为 void 类型时, @ApiOperation ...
随机推荐
- [C#] C# 知识回顾 - 异常介绍
异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...
- Web安全相关(三):开放重定向(Open Redirection)
简介 那些通过请求(如查询字符串和表单数据)指定重定向URL的Web程序可能会被篡改,而把用户重定向到外部的恶意URL.这种篡改就被称为开发重定向攻击. 场景分析 假设有一个正规网站http:// ...
- [数据结构]——堆(Heap)、堆排序和TopK
堆(heap),是一种特殊的数据结构.之所以特殊,因为堆的形象化是一个棵完全二叉树,并且满足任意节点始终不大于(或者不小于)左右子节点(有别于二叉搜索树Binary Search Tree).其中,前 ...
- 笔记:Memory Notification: Library Cache Object loaded into SGA
笔记:Memory Notification: Library Cache Object loaded into SGA在警告日志中发现一些这样的警告信息:Mon Nov 21 14:24:22 20 ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
- babel-loader-presets
babel-loader的presets的设置有一定的顺序.es2015必须出现在stage-0前面,我记得这是因为es2015是ES6的标准,state-0等是对ES7一些提案的支持, state- ...
- ASP.NET Aries 4.0 开源发布:已完成基础功能优化重写
主要更新: 1:增加AR.Global.GetUser() 方法返回当前登陆者的用户信息. 2:重写AR.Combobox 支持下拉树. 3:调整及扩展Input下拉的配置参数. 4:优化及新增AR. ...
- Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇
目前业界流行的分布式消息队列系统(或者可以叫做消息中间件)种类繁多,比如,基于Erlang的RabbitMQ.基于Java的ActiveMQ/Apache Kafka.基于C/C++的ZeroMQ等等 ...
- 【Web动画】CSS3 3D 行星运转 && 浏览器渲染原理
承接上一篇:[CSS3进阶]酷炫的3D旋转透视 . 最近入坑 Web 动画,所以把自己的学习过程记录一下分享给大家. CSS3 3D 行星运转 demo 页面请戳:Demo.(建议使用Chrome打开 ...
- 浅谈C#网络编程(二)
阅读目录: 异步IO 非阻塞式同步IO 基于回调的异步IO并发 异步IO 上篇提到用多线程处理多个阻塞同步IO而实现并发服务端,这种模式在连接数量比较小的时候非常适合,一旦连接过多,性能会急速下降. ...