文档

启动前hook处理

更新时间:

本文为您介绍如何在服务启动前进行hook处理操作。

服务初始化

在服务启动之前,您可以定义hookfunc方法,通过AddStartHook将其注册到启动流程中。启动服务之前,会依据注册顺序,依次调用hookfunc方法。

func main() {
  pairec.AddStartHook(func() error {
    precall.RegisterRecall("LiveRoomRecall", recall.NewLiveRoomRecall())
    module.RegisterGenerateItemDataFunc(filter.GenerateExposureHistoryItemData)
    prank.SetBoostFunc(rank.BoostScore)
    return nil
  })

  pairec.Route("/api/rec/live_room_sync", &controller.LiveRoomSyncController{})
  pairec.Route("/api/rec/live_feed", &controller.LiveFeedController{})

  pairec.Run()
}

路由配置

与Golang中的HTTP包类似,pairec也提供了两种注册路由方式:

  • pairec.HandleFunc和HTTP中的HandleFunc类似。

     HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {                                                                                                                                                                                                                                                           
            io.WriteString(w, "success")                                                                                                                                                                                                                                                                                             
    })
  • 使用Controller注册pairec.Route。

    Route("/api/recommend", &web.RecommendController{})

    如果您提供自己的Controller,则需要实现ControllerInterface接口

    type ControllerInterface interface {                                                                                                                                                                                                                                                                                             
        Process(http.ResponseWriter, *http.Request)                                                                                                                                                                                                                                                                                 
    }