启动前 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")                                                                                                                                                                                                                                                                                             
    })
    
  • pairec.Route , 使用 Controller 注册

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

    如果用户提供自己的 Controller,需要实现接口

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