더북(TheBook)

웹 서버를 구동하기 위한 Run 메서드를 Server 타입에 정의해 보자.

▼ server.go

func (s *Server) Run(addr string) {
    // startHandler를 라우터 핸들러 함수로 지정
    s.startHandler = s.router.handler()
     
    // 등록된 미들웨어를 라우터 핸들러 앞에 하나씩 추가
    for i := len(s.middlewares) - 1; i >= 0; i-- {
        s.startHandler = s.middlewares[i](s.startHandler)
    }
     
    // 웹 서버 시작
    if err := http.ListenAndServe(addr, s); err != nil {
        panic(err)
    }
}

먼저 startHandlerrouterhandler 메서드를 실행하여 얻은 핸들러로 지정하고, 등록된 미들웨어들을 라우터 핸들러 앞에 하나씩 추가했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.