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日
    浏览(57)
  • 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日
    浏览(53)
  • 【微信小程序调用百度API实现图像识别功能】----项目实战

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月01日
    浏览(54)
  • 一键获取域名的相关信息——域名反查Api接口的神奇功能

    在现代互联网时代中,域名是我们上网必备的工具,它承载着我们上网所需的所有信息。但是有时我们需要了解域名的相关信息,比如IP地址、注册人信息、域名到期时间等等。这时候,我们就需要用到域名反查API接口,来获取这些信息。 一键获取域名的相关信息——域名反

    2024年02月05日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包