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; } }
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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?