当前位置: 首页 > news >正文

WPF实战项目十一(API篇):待办事项功能api接口

1、新建ToDoController.cs继承基础控制器BaseApiController,但是一般业务代码不写在控制器内,业务代码写在Service,先新建统一返回值格式ApiResponse.cs:

public class ApiResponse{public ApiResponse(bool status, string messages = ""){this.Message = messages;this.Status = status;}public ApiResponse(bool status, object result){this.Status = status;this.Result = result;}/// <summary>/// 后台消息/// </summary>public string Message { get; set; }/// <summary>/// 返回状态/// </summary>public bool Status { get; set; }/// <summary>/// 返回结果/// </summary>public object Result { get; set; }}

2、新建基础Service接口:IBaseService.cs,包含CRUD方法:

public interface IBaseService<T>{Task<ApiResponse> GetAllAsync();Task<ApiResponse> GetSingleAsync(int id);Task<ApiResponse> AddEntityAsync(T model);Task<ApiResponse> UpdateEntityAsync(T model);Task<ApiResponse> DeleteEntityAsync(int id);}

3、新建待办事项接口IToDoService.cs,继承IBaseService

public interface IToDoService : IBaseService<ToDo>{}

4、新建实现类ToDoService.cs,继承IToDoService.cs

public class ToDoService : IToDoService{private readonly IUnitOfWork unitOfWork;public ToDoService(IUnitOfWork unitOfWork){this.unitOfWork = unitOfWork;}/// <summary>/// 新增待办事项/// </summary>/// <param name="model"></param>/// <returns></returns>public async Task<ApiResponse> AddEntityAsync(ToDo model){try{await unitOfWork.GetRepository<ToDo>().InsertAsync(model);if(await unitOfWork.SaveChangesAsync() > 0){return new ApiResponse(true, model);}else{return new ApiResponse(false, "添加数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 删除待办事项/// </summary>/// <param name="id"></param>/// <returns></returns>public async Task<ApiResponse> DeleteEntityAsync(int id){try{var repository = unitOfWork.GetRepository<ToDo>();var todo = await repository.GetFirstOrDefaultAsync(predicate: t => t.Id.Equals(id));repository.Delete(todo);if (await unitOfWork.SaveChangesAsync() > 0){return new ApiResponse(true, "删除数据成功!");}else{return new ApiResponse(false, "删除数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 查询所有数据/// </summary>/// <returns></returns>public async Task<ApiResponse> GetAllAsync(){try{var repository = unitOfWork.GetRepository<ToDo>();var todo = await repository.GetAllAsync();if (todo != null){return new ApiResponse(true, todo);}else{return new ApiResponse(false, "查询数据失败!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 根据Id查询数据/// </summary>/// <param name="id"></param>/// <returns></returns>public async Task<ApiResponse> GetSingleAsync(int id){try{var repository = unitOfWork.GetRepository<ToDo>();var todo = await repository.GetFirstOrDefaultAsync(predicate: t => t.Id.Equals(id));if (todo != null){return new ApiResponse(true, todo);}else{return new ApiResponse(false, $"未查询到Id={id}的数据!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}/// <summary>/// 更新数据/// </summary>/// <param name="model"></param>/// <returns></returns>/// <exception cref="NotImplementedException"></exception>public async Task<ApiResponse> UpdateEntityAsync(ToDo model){try{var repository = unitOfWork.GetRepository<ToDo>();var todo = await repository.GetFirstOrDefaultAsync(predicate: t => t.Id.Equals(model.Id));if (todo != null){todo.Title = model.Title;todo.Content = model.Content;todo.Status = model.Status;todo.UpdateDate = DateTime.Now;repository.Update(todo);if(await unitOfWork.SaveChangesAsync() > 0){return new ApiResponse(true, "更新数据成功!");}else{return new ApiResponse(true, "更新数据失败!");}}else{return new ApiResponse(false, $"未查询到Id={model.Id}的数据!");}}catch (Exception ex){return new ApiResponse(false, ex.Message);}}}

5、program.cs里面注入服务

builder.Services.AddTransient<IToDoService, ToDoService>();

6、ToDoController.cs里面依赖注入IUnitOfWork和IToDoService,并添加CURD的代码

public class ToDoController : BaseApiController{private readonly IUnitOfWork unitOfWork;private readonly IToDoService toDoService;public ToDoController(IUnitOfWork unitOfWork, IToDoService toDoService){this.unitOfWork = unitOfWork;this.toDoService = toDoService;}[HttpGet]public async Task<ApiResponse> GetToDoById(int Id){return await toDoService.GetSingleAsync(Id);}[HttpGet]public async Task<ApiResponse> GetAllToDo(){return await toDoService.GetAllAsync();}[HttpPost]public async Task<ApiResponse> AddToDo([FromBody] ToDo toDo){return await toDoService.AddEntityAsync(toDo);}[HttpDelete]public async Task<ApiResponse> DeleteToDo(int id){return await toDoService.DeleteEntityAsync(id);}[HttpPost]public async Task<ApiResponse> UpdateToDo(ToDo toDo){return await toDoService.UpdateEntityAsync(toDo);}}

7、F5运行项目

 

 

 

 

http://www.lryc.cn/news/121556.html

相关文章:

  • ffmpeg给视频添加时间水印,准确且不模糊
  • ① vue复习。从安装到使用
  • 【Linux】多线程——线程引入 | 线程控制
  • 查询树形目录(内存遍历成树返回)
  • Easys Excel的表格导入(读)导出(写)-----java
  • 纯净版ISO镜像下载大全(Windows、Linux、mac)
  • VMware上的Centos设置静态IP
  • 【MySQL】数据库的基本操作
  • Spring整合MyBatis(详细步骤)
  • Linux:Shell编程之正则表达式
  • Python Opencv实践 - 图像缩放
  • 大脑营行|“福安市华龙教育基金”支持家乡教育事业发展
  • Windows 2016安装Jenkins
  • 章节4:Burp Target模块
  • CAN总线一些经典的现场故障
  • VS+QT+Opencv使用YOLOv4对视频流进行目标检测
  • oracle创建管理用户并授权
  • ​三江学院图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》
  • 机器学习笔记 - 基于PyTorch + 类似ResNet的单目标检测
  • 系列二、Redis简介
  • 基于TF-IDF+TensorFlow+词云+LDA 新闻自动文摘推荐系统—深度学习算法应用(含ipynb源码)+训练数据集
  • 尼科彻斯定理-C语言/Java
  • C++学习笔记——从面试题出发学习C++
  • WebAPIs 第二天
  • 解决macOS执行fastboot找不到设备的问题
  • Linux命令 -- chmod
  • 国产超低功耗32位MCU的应用
  • 将数组(矩阵)旋转根据指定的旋转角度scipy库的rotate方法
  • MFC创建和使用OCX控件
  • 【设计模式】抽象工厂模式