e:\gostudent\gin\bubble>go mod tidy //增加缺失的包,移除没用的包
package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.default() //告诉gin框架去哪里找模板文件 r.loadhtmlglob("templates/*") r.get("/", func(c *gin.context) { c.html(http.statusok, "", nil) }) r.run(":9090") }
package main import ( "github.com/gin-gonic/gin" "net/http" ) //tode model type tode struct { id int `json:"id"` title string `json:"title"` status bool `json:"status"` } func main() { //创建数据库 //sql: create database bubble; //连接数据库 //遇事不决写注释 r := gin.default() //告诉gin框架模板文件引用的静态文件去哪里找 r.static("/static","static") //告诉gin框架去哪里找模板文件 r.loadhtmlglob("templates/*") r.get("/", func(c *gin.context) { c.html(http.statusok, "", nil) }) //v1 api v1group := r.group("v1") { //待办事项 //添加 v1group.post("/todo", func(c *gin.context) { }) //查看所有的代办事项 v1group.get("/todo", func(c *gin.context) { }) //查看某一个代办事项 v1group.get("/todo/:id", func(c *gin.context) { }) //修改某一个待办事项 v1group.put("/todo/:id", func(c *gin.context) { }) //删除 v1group.delete("/todo/:id", func(c *gin.context) { }) } r.run(":9090") }
func initmysql() (err error) { dsn := "root:123456@tcp(127.0.0.1:3306)/bubble?charset=utf8mb4&parsetime=true&loc=local" db, err = gorm.open("mysql",dsn) //测试连通性 err = db.db().ping() return //return db.db().ping() } func main() { //创建数据库 //sql: create database bubble; //连接数据库 err := initmysql() if err != nil { //可以搞个日志 panic(err) } //模型绑定 db.automigrate(&tode{}) //todos defer db.close() //程序退出,关闭数据库
//待办事项 //添加 v1group.post("/todo", func(c *gin.context) { //前端页面填写待办事项,点击提交,会发请求到这里 //1. 从请求中把数据拿出来 var todo tode c.bindjson(&todo) //2. 存入数据库 err = db.create(&todo).error //3. 返回响应 if err != nil { c.json(http.statusok,gin.h{"error": err.error()}) }else { c.json(http.statusok, todo) //c.json(http.statusok, gin.h{ // "code": 200, // "msg" : "success", // "data": todo, //}) }
//查看所有的代办事项 v1group.get("/todo", func(c *gin.context) { //查询todo这个表里的所有数据 var todelist []tode err := db.find(&todelist).error if err != nil { c.json(http.statusok, gin.h{"error": err.error()}) }else { c.json(http.statusok, todelist) } }) //查看某一个代办事项 v1group.get("/todo/:id", func(c *gin.context) { })
//修改某一个待办事项 v1group.put("/todo/:id", func(c *gin.context) { id, ok := c.params.get("id") if !ok { c.json(http.statusok, gin.h{"error": "无效的id"}) return } var todo todo if err = db.where("id=?", id).first(&todo).error; err!=nil{ c.json(http.statusok, gin.h{"error": err.error()}) return } c.bindjson(&todo) if err = db.save(&todo).error; err!= nil{ c.json(http.statusok, gin.h{"error": err.error()}) }else{ c.json(http.statusok, todo) } })
//删除 v1group.delete("/todo/:id", func(c *gin.context) { id, ok := c.params.get("id") if !ok { c.json(http.statusok, gin.h{"error": "无效的id"}) return } if err = db.where("id=?", id).delete(todo{}).error;err!=nil{ c.json(http.statusok, gin.h{"error": err.error()}) }else{ c.json(http.statusok, gin.h{id:"deleted"}) } })
package main import ( "github.com/gin-gonic/gin" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "net/http" ) var ( db *gorm.db ) //tode model type todo struct { id int `json:"id"` title string `json:"title"` status bool `json:"status"` } func initmysql() (err error) { dsn := "root:123456@tcp(127.0.0.1:3306)/bubble?charset=utf8mb4&parsetime=true&loc=local" db, err = gorm.open("mysql",dsn) //测试连通性 err = db.db().ping() return //return db.db().ping() } func main() { //创建数据库 //sql: create database bubble; //连接数据库 err := initmysql() if err != nil { //可以搞个日志 panic(err) } //模型绑定 db.automigrate(&todo{}) //todos defer db.close() //程序退出,关闭数据库 //遇事不决写注释 r := gin.default() //告诉gin框架模板文件引用的静态文件去哪里找 r.static("/static","static") //告诉gin框架去哪里找模板文件 r.loadhtmlglob("templates/*") r.get("/", func(c *gin.context) { c.html(http.statusok, "", nil) }) //v1 api v1group := r.group("v1") { //待办事项 //添加 v1group.post("/todo", func(c *gin.context) { //前端页面填写待办事项,点击提交,会发请求到这里 //1. 从请求中把数据拿出来 var todo todo c.bindjson(&todo) //2. 存入数据库 err := db.create(&todo).error if err != nil { c.json(http.statusok,gin.h{"error": err.error()}) }else { c.json(http.statusok, todo) //c.json(http.statusok, gin.h{ // "code": 200, // "msg" : "success", // "data": todo, //}) } //3. 返回响应 }) //查看所有的代办事项 v1group.get("/todo", func(c *gin.context) { //查询todo这个表里的所有数据 var todelist []todo err := db.find(&todelist).error if err != nil { c.json(http.statusok, gin.h{"error": err.error()}) }else { c.json(http.statusok, todelist) } }) //查看某一个代办事项 v1group.get("/todo/:id", func(c *gin.context) { }) //修改某一个待办事项 v1group.put("/todo/:id", func(c *gin.context) { id, ok := c.params.get("id") if !ok { c.json(http.statusok, gin.h{"error": "无效的id"}) return } var todo todo if err = db.where("id=?", id).first(&todo).error; err!=nil{ c.json(http.statusok, gin.h{"error": err.error()}) return } c.bindjson(&todo) if err = db.save(&todo).error; err!= nil{ c.json(http.statusok, gin.h{"error": err.error()}) }else{ c.json(http.statusok, todo) } }) //删除 v1group.delete("/todo/:id", func(c *gin.context) { id, ok := c.params.get("id") if !ok { c.json(http.statusok, gin.h{"error": "无效的id"}) return } if err = db.where("id=?", id).delete(todo{}).error;err!=nil{ c.json(http.statusok, gin.h{"error": err.error()}) }else{ c.json(http.statusok, gin.h{id:"deleted"}) } }) } r.run(":9090") }
如对本文有疑问, 点击进行留言回复!!
VSCode1.4 搭建Golang的开发调试环境(遇到很多问题)
网友评论