1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù)您的main.go文件,我認(rèn)為您可以這樣做:
func main() {
rdb, err := redis.NewClient()
if err != nil {
log.Fatal(err)
}
router := gin.Default()
router.POST("/api/v1/shorten", routes.Shorten(rdb))
router.GET("/api/v1/:url", routes.Resolve(rdb))
router.Run("localhost:9000")
}
func Shorten(rdb *redis.Client) gin.HandlerFunc {
return func(context *gin.Context) {
ctx := context.Request.Context()
...
if err := rdb.Set(ctx, key, value); err != nil {
context.IndentedJSON(http.StatusInternalServerError, "Error")
return
}
....
}
}
或者更好的是,您可以創(chuàng)建一個(gè)包含 redis 客戶端并充當(dāng)請(qǐng)求路由器的結(jié)構(gòu),如下所示:
type Router struct {
rdb *redis.Client
}
func NewRouter(rdb *redis.Client) *Router {
return &Router{rdb: rdb}
}
func (r *Router) Shorten() gin.HandlerFunc {
return func(context *gin.Context) {
...
r.rdb.Set()
...
}
}
func (r *Router) Resolve() gin.HandlerFunc {
return func(context *gin.Context) {
...
r.rdb.Get()
...
}
}
func main() {
rdb, err := redis.NewClient()
if err != nil {
log.Fatal(err)
}
r := NewRouter(rdb)
router := gin.Default()
router.POST("/api/v1/shorten", r.Shorten)
router.GET("/api/v1/:url", r.Resolve)
router.Run("localhost:9000")
}
- 1 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)