并需要你的帮助。想要构建简单的 api 并遇到一些问题。我选择了带有postgres 驱动程序的gin和 database/sql
package main
import (
"database/sql"
"fmt"
"github.com/gin-gonic/gin"
_ "github.com/lib/pq"
)
func main() {
router := gin.Default()
router.GET("/search/:text", SearchWord)
router.Run(":8080")
}
我需要查询 DB 并从这个请求中生成 json。
func checkErr(err error) {
if err != nil {
panic(err)
}
}
type Message struct {
ticket_id int `json:"ticket_id"`
event string `json:"event"`
}
func SearchWord(c *gin.Context) {
word := c.Params.ByName("text")
db, err := sql.Open("postgres", "host=8.8.8.8 user= password= dbname=sample")
defer db.Close()
checkErr(err)
rows, err2 := db.Query("SELECT ticket_id,event FROM ....$1, word)
checkErr(err)
for rows.Next() {
var ticket_id int
var event string
err = rows.Scan(&ticket_id, &event)
checkErr(err)
fmt.Printf("%d | %s \n\n", ticket_id, event)
}
}
这个尾声很好用,但是当我需要制作 json 时。我需要制作一行结构
type Message struct {
ticket_id int `json:"ticket_id"`
event string `json:"event"`
}
然后我需要创建切片,并附加每一行。Next() 循环一个比用 Json 回答浏览器...
c.JSON(200, messages)
但是如何做到这一点......不知道:(