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

这篇具有很好参考价值的文章主要介绍了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> Get(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运行项目

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

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

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

 WPF实战项目十一(API篇):待办事项功能api接口,.netcore,WPF,webapi,.netcore,wpfWPF实战项目十一(API篇):待办事项功能api接口,.netcore,WPF,webapi,.netcore,wpf

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

WPF实战项目十一(API篇):待办事项功能api接口,.netcore,WPF,webapi,.netcore,wpf文章来源地址https://www.toymoban.com/news/detail-637348.html

到了这里,关于WPF实战项目十一(API篇):待办事项功能api接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF实战项目十(API篇):引入工作单元UnitOfWork

    1、通过github地址:https://github.com/arch/UnitOfWork,下载UnitOfWork的代码,将工作单元部分的代码引用到自己的项目,新增UnitOfWork文件夹。 2、在UnitOfWork文件夹下引用UnitOfWork下的IPagedList.cs、PagedList.cs类,WPFProjectAPI项目引用WPFProjectShared项目。 3、然后在program.cs下添加UnitOfWork的服务

    2024年02月16日
    浏览(38)
  • UniAPP社区论坛项目实战--社区服务 API 接口文档

    服务器请求地址:http://ts.lagou.uieee.com 客户端访问统一接口规则 : /api/v2/ gitHub 完整 API 接口服务文档查阅:https://github.com/slimkit/slimkit.github.io/tree/gh-pages/docs 体验版前台地址:http://ts.lagou.uieee.com/feeds 后台管理系统地址: http://ts.lagou.uieee.com/admin 体验账号:root 登陆密码:roo

    2024年01月23日
    浏览(40)
  • 【微信小程序调用百度API实现图像识别功能】----项目实战

    本章主要讲述: 如何更快的上手小程序 如何搭建一个页面以及跳转到另一个页面 如何调用百度API接口实现图像识别技术 如何在微信小程序的后台添加合法域名        私信获取源码,有问题可以关注留言或私信,计算机毕业设计(小程序,网页设计,数据库,php开发等) 目录

    2024年02月09日
    浏览(48)
  • 7.15 SpringBoot项目实战 【学生入驻】(上):从API接口定义 到 Mybatis查询 串讲

    接下来我们实战【学生入驻】,对于C端学生端,一切交互开始于知道 当前学生是否入驻 、 是否有借阅资格 ,所以SpringBoot后端需要提供给vue前端的第一个API是:当前登录的学生信息(是否入驻、是否有借阅资格)! 所以,本文将使用SpringBoot实现C端学生端第一个接口:查询

    2024年02月08日
    浏览(41)
  • 第五节、项目支付功能实战-证书获取、微信支付集成初始化配置、sdk统一下单、api安全源码解读

    本节首先会讲解商户证书、私钥、微信平台证书的获取、APIv3密钥的生成。然后将我们微信支付需要的参数配置信息初始化出来,为后面的业务代码使用。结合微信平台证书下载案例和微信统一下单api来讲解请求和响应都做了什么操作。上一节中我们提到的那些证书又是如何

    2024年02月03日
    浏览(33)
  • 通过微软Azure调用GPT的接口API-兼容平替OpenAI官方的注意事项

    众所周知,我们是访问不通OpenAI官方服务的,但是我们可以自己通过代理或者使用第三方代理访问接口 现在新出台的规定禁止使用境外的AI大模型接口对境内客户使用,所以我们需要使用国内的大模型接口 国内的效果真的很差,现在如果想使用GPT大模型,可以使用微软Azure的

    2024年02月12日
    浏览(32)
  • 【实战】jenkins api 接口

    Jenkins 对外暴露的动作交付入口 为外部程序提供入口,可以控制Jenkins 支持协议 - Http Api 接口支持用户名、密码认证 Jenkins Api支持的典型功能:运行Job、查看任务状态、返回任务编号…等 创建一个有任务运行和查询权限的用户 较老版本的Jenkins操作关闭跨站脚本伪造请求保护

    2024年02月04日
    浏览(27)
  • API商品数据接口调用爬虫实战

    随着互联网的发展,越来越多的商家开始将自己的商品数据通过API接口对外开放,以供其他开发者使用。这些API接口可以提供丰富的商品数据,包括商品名称、价格、库存、图片等信息。对于爬虫开发者来说,通过调用这些API接口,可以更加便捷地获取商品数据,避免了爬取

    2024年02月07日
    浏览(30)
  • WEB API 接口签名sign验证入门与实战

    B站讲的最好的接口加密解密以及接口签名sign原理 加密:在网络上传输的原始数据(明文)经过加密算法加密后形成(密文)传输,防止被窃取 解密:将密文还原成原始数据 对称式加密:对加密和解密使用同一个秘钥 非对称加密:非对称式加密需要两个秘钥(双钥),分别

    2024年02月01日
    浏览(44)
  • 大智慧L2实时api接口的逐笔委托功能执行代码分享

    用过l2行情接口的投资者应该都了解大部分的接口都是有逐笔委托功能的,那么大智慧L2实时api接口也有着很强大的逐笔委托功能,投资者可以通过这个逐笔委托功能可以看到一个股票的每天出现的全部委托指令,那么在这个逐笔委托功能里包含了委托价格、委托时间、委托量

    2024年02月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包