Go-gin的基本使用

来源:互联网 发布:淘宝美工设计培训 编辑:程序博客网 时间:2024/06/06 10:04

之前了解到了golang中使用较多的gin框架,所以在这里贴一个简单的demo,便于记录,代码如下:

package mainimport ("database/sql""fmt""log""net/http""github.com/gin-gonic/gin"_ "github.com/go-sql-driver/mysql")type Person struct {Id        int    `json:"id" form:"id"`FirstName string `json:"first_name" form:"first_name"`LastName  string `json:"last_name" form:"last_name"`}func main() {db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?parseTime=true")defer db.Close()if err != nil {log.Fatalln(err)}db.SetMaxIdleConns(20)db.SetMaxOpenConns(20)if err := db.Ping(); err != nil {log.Fatalln(err)}router := gin.Default()router.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "It works")})router.GET("/insert", func(c *gin.Context) {firstName := c.Request.FormValue("first_name")lastName := c.Request.FormValue("last_name")rs, err := db.Exec("INSERT INTO person(first_name, last_name) VALUES (?, ?)", firstName, lastName)if err != nil {log.Fatalln(err)}id, err := rs.LastInsertId()if err != nil {log.Fatalln(err)}fmt.Println("insert person Id {}", id)msg := fmt.Sprintf("insert successful %d", id)c.JSON(http.StatusOK, gin.H{"msg": msg})})router.GET("/query", func(c *gin.Context) {rows, err := db.Query("SELECT id, first_name, last_name FROM person")defer rows.Close()if err != nil {log.Fatalln(err)}persons := make([]Person, 0)for rows.Next() {var person Personrows.Scan(&person.Id, &person.FirstName, &person.LastName)persons = append(persons, person)}if err = rows.Err(); err != nil {log.Fatalln(err)}c.JSON(http.StatusOK, gin.H{"persons": persons,})})router.Run(":8080")}

如代码所示,实现一个简单的数据插入与查询的功能,服务监听8080端口。

原创粉丝点击