golang实现极简todolist

news/2024/11/22 18:37:22/

ToDoList

最近跟着qimi老师做了一个ToDoList,我做的GitHub地址贴在这里,但由于前端出了点问题,所以都是用postman进行测试

原项目地址

部分功能展示

删除代办

Untitled

查找代办

Untitled

下面给出思路

思路

其实这是一个很简单的增删改查的实现,要做的就三点:设计路由、设计todo事项的组成、设计增删改查以及返回参数。同时我也从中学到了一点:遇事不决,先写注释!

设计路由

设计路由针对这个而言很简单,因为总共四大项CRUD,查询函数里面再分单个和整体,所以就以实际操作命名,然后删除和查询单个后面再添加对应的id,类似于

v1Group.GET("/todo/:id", func(c *gin.Context) {var todo Todoid := c.Param("id") // 从请求的URL参数中获取IDif err := DB.First(&todo, id).Error; err != nil {c.JSON(http.StatusNotFound, gin.H{"error": "Todo not found"})} else {c.JSON(http.StatusOK, gin.H{"code": 200,"msg":  "success","data": todo,})}
})

设计todo事项的组成

这个最简单的三个点就是id,内容,状态(是否删除),所以做出以下设计,后续还可以进行增加内容,例如重复次数,提醒时间点,截止时间,等等

type Todo struct {Id     int    `json:"id"`Title  string `json:"title"`Status string `json:"status"`
}

设计增删改查以及返回参数

直接采用gorm框架,不过gorm有一定的改变,例如直接关闭数据库,不用手动实现,其余都在代码当中,这里贴一个初始化函数

func initMySQL() (err error) {dsn := "root:pwd0@tcp(127.0.0.1:3306)/database?charset=utf8mb4&parseTime=True&loc=Local"DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {return err}return nil
}

反思

这是一个很简单的小demo,只需要一两个小时就可以搞定,但是还是锻炼了我很多,初学总是记不住很多东西,这么一个简单的东西可以很有效的让我把基础再度巩固


http://www.ppmy.cn/news/1200875.html

相关文章

【学习推荐】极客时间-左耳听风专栏

我从未看到过如此系统全面立体的阐述整个计算机学习脉络的教程。非常建议直接入手一份,首单特价98¥ 极客时间。推荐码也没几块钱,我就不贴我的返利了,如果囊中带涩也可以几个人拼一份,建议官网而不是拓印版。为什么建议…

一个使用zmq_recv 接收 5555端口的demo

以下是一个使用ZeroMQ库的C语言代码示例&#xff0c;该代码创建一个ZMQ的REP套接字&#xff0c;连接到5555端口&#xff0c;并接收消息&#xff1a; #include <zmq.h> #include <stdio.h> #include <unistd.h> #include <string.h>int main (void) {v…

基于深度学习的菠萝与果叶视觉识别及切断机构设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、课题内容二、总体方案确定2.1 方案选择2.2 菠萝的视觉识别流程2.3 菠萝果叶切断机构设计流程 三 基于深度学习的菠萝检测模型3.1 卷积神经网络简介3.2 YOLO卷积神经网络3.3 图像采集与数据制作3.4 数据训练与…

【NI-DAQmx入门】外部采样时钟相关

1.时钟的作用 时钟在几乎所有测量系统中都起着至关重要的作用。通过硬件定时测量&#xff0c;时钟控制采样或更新的发生时间。与依赖软件计时测量相比&#xff0c;您可以选择硬件定时测量来实现采样或更新之间更一致的时间间隔。以数模转换器特性分析为例。该应用由三个基本部分…

记录:Unity脚本的编写5.0

目录 前言创建动画Unity Animation、Animator常用类关于两者的区别Animator 编写脚本 大型连续剧之在untiy中&#xff08;或者别的什么活动&#xff09; 前言 之前在场景中添加了背景音乐&#xff0c;而在我们的日常的体验中&#xff0c;可以发现游戏或者场景中有很多有趣的动…

ACWing.第 128 场周赛 (B、C题解)

B、5286. 翻倍&#xff08;思维推导&#xff09; 一、题目要求 给定两个正整数&#xff0c;初始时两数均为 1。 你可以进行任意次&#xff08;也可以不进行&#xff09;翻倍操作&#xff0c;每次操作任选一个非负整数 k&#xff0c;令两数中的一个数乘以 k&#xff0c;另一个…

Linux 系统管理工具 supervisor 详解

目录 1. Linux 系统管理工具 supervisor 详解1.1. supervisor 进程管理服务组成1.2. 进程管理服务部署1.3. 进程管理服务配置信息1.4. 进程管理服务命令使用1.5. 进程管理服务启动应用1.6. 进程管理服务进程1.6.1. 进程管理应用实战-Nginx 1. Linux 系统管理工具 supervisor 详…

面试问题?

1.面向对象的特征&#xff1f; 2.开放闭合 3.java中的泛型可以用基本类型吗&#xff1f; 4.重载和重写的区别&#xff1f; 5.string、stringbuffer、stringbuilder? 6.单例模式的实现方式有哪几种&#xff1f; 7.volicate除了保证 8.sy是重量级锁还是轻量级锁&#xff…