Go 一鍵生成 後端 restful api
阿新 • • 發佈:2019-02-28
not order .com ted tint web com restfu pda 一鍵生成 後端 restful api
說明
主要用這個庫 gitee.com/konyshe/gogo, 詳情可以去查看說明文件。 只要連接好數據庫表,不用 數據庫的 models文件,就可以最簡單的辦法 生成 restful api. 原項目有一個小問題, 需要修改 源碼 SQLUtils.go 239行修改 case "INT": { queryData[queryCount][a] = new(sql.NullInt64) } 290 追加 case *sql.NullInt64: result[columnsType[a].Name()] = *s 是因為涉及到 數據庫裏面 int 字段 允許為空,默認是null, 數據庫讀取的時候 會報錯 sql: Scan error on column index 3, name "created_on": converting driver.Value type <nil> ("<nil>") to a int32: invalid syntax
demo
package main import ( "net/http" "strconv" "gitee.com/konyshe/gogo" ) func main() { // 初始化數據庫連接 if err := gogo.SQLInit("mysql", "root:1234567890@tcp(192.168.100.50:3306)/go?charset=utf8&parseTime=true", 10, 1); err != nil { gogo.Log().Error(err.Error()) return } // 增 gogo.POST("/restful/:tablename", func(ctx *gogo.HTTPContext) { affect, err := gogo.SQLInsert( ctx.GetPathParam(":tablename"), ctx.GetPostBody()) if err != nil { gogo.Log().Error(err.Error()) ctx.WriteString(err.Error()) } else { ctx.WriteString(strconv.FormatInt(affect, 10)) } }) // 刪 gogo.DELETE("/restful/:tablename/:id", func(ctx *gogo.HTTPContext) { affect, err := gogo.SQLDelete( ctx.GetPathParam(":tablename"), "id="+ctx.GetPathParam(":id")) if err != nil { gogo.Log().Error(err.Error()) ctx.WriteString(err.Error()) } else { ctx.WriteString(strconv.FormatInt(affect, 10)) } }) // 改 gogo.PUT("/restful/:tablename/:id", func(ctx *gogo.HTTPContext) { affect, err := gogo.SQLUpdate( ctx.GetPathParam(":tablename"), "id="+ctx.GetPathParam(":id"), ctx.GetPostBody()) if err != nil { gogo.Log().Error(err.Error()) ctx.WriteString(err.Error()) } else { ctx.WriteString(strconv.FormatInt(affect, 10)) } }) // 查 gogo.GET("/restful/:tablename/:id", func(ctx *gogo.HTTPContext) { queryData, err := gogo.SQLQueryByMap( "", ctx.GetString("feilds"), ctx.GetPathParam(":tablename"), "id="+ctx.GetPathParam(":id"), "", 0, 1) if err != nil { gogo.Log().Error(err.Error()) ctx.WriteString(err.Error()) } else { ctx.WriteJSON(queryData) } }) // 查 gogo.GET("/restful/:tablename", func(ctx *gogo.HTTPContext) { queryData, err := gogo.SQLQueryByMap( ctx.GetString("columnname"), ctx.GetString("feilds"), ctx.GetPathParam(":tablename"), ctx.GetString("where"), ctx.GetString("order"), ctx.GetInt("offset", 0), ctx.GetInt("count", 10)) if err != nil { gogo.Log().Error(err.Error()) ctx.WriteString(err.Error()) } else { ctx.WriteJSON(queryData) } }) // 404頁面 gogo.STATUS(http.StatusNotFound, func(ctx *gogo.HTTPContext) { ctx.WriteHeader(http.StatusNotFound) l, err := gogo.SQLQueryByMap("webname", "*", "dede_flink", "", "", 0, 100) if err == nil { ctx.WriteExecute(l, "views/notfound.tmpl") return } }) // 啟動HTTP服務 gogo.Run(":8080") }
Go 一鍵生成 後端 restful api