NSwagStudio for Swagger Api
2018-06-18 01:38:05来源:未知 阅读 ()
本案例主要说明如何使用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; } }
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)); } }
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;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:25岁的我该如何冲破自己的迷茫
- Building & Debugging chromium on CLion for Linu 2020-05-19
- 透彻理解C++11新特性:右值引用、std::move、std::forward 2020-04-30
- PTA 1002 A+B for Polynomials 2020-04-24
- Test for change word to publish on cnblogs 2020-04-21
- CodeForces 1326E - Bombs 2020-03-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash