请你帮我写一个gin接口,传入一串字符作为参数,将参数作为商品序号,在数据库中找到对应的商品并将商品信息发出
时间: 2023-12-21 07:03:29 浏览: 62
使用接口传数据
5星 · 资源好评率100%
好的,以下是一个简单的示例代码:
```go
package main
import (
"database/sql"
"fmt"
"log"
"github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql"
)
type Product struct {
ID int `json:"id"`
Name string `json:"name"`
Price int `json:"price"`
}
func main() {
// 连接数据库
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/mydb")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 初始化 Gin
r := gin.Default()
// 定义接口
r.GET("/product/:id", func(c *gin.Context) {
// 获取参数
id := c.Param("id")
// 查询数据库
var product Product
err = db.QueryRow("SELECT * FROM products WHERE id=?", id).Scan(&product.ID, &product.Name, &product.Price)
if err != nil {
log.Fatal(err)
}
// 返回商品信息
c.JSON(200, product)
})
// 启动服务
err = r.Run(":8080")
if err != nil {
log.Fatal(err)
}
}
```
在上面的代码中,我们定义了一个 `Product` 结构体,用于存储商品信息。然后通过 `sql.Open` 函数连接了 MySQL 数据库,并在接口中使用了 `db.QueryRow` 函数查询了商品信息。最后使用 `c.JSON` 函数将商品信息以 JSON 格式返回给客户端。
注意,这里我们使用了 `:id` 占位符来接收商品序号参数。在查询语句中使用了 `?` 占位符来代表实际的参数值,这样可以防止 SQL 注入攻击。
阅读全文