Server 타입 정의
server.go 파일을 생성하고 Server 타입을 정의해 보자.
▼ server.go
type Server struct { *router middlewares []Middleware startHandler HandlerFunc }
Server 타입에는 router, middlewares, startHandler가 내부 필드로 정의되어 있다. middlewares에 사용할 미들웨어를 모두 등록해두고, 웹 서버가 구동되면 등록된 미들웨어를 체인 형태로 연결한다. 미들웨어 체인 마지막 부분에 실제 웹 요청 처리 로직이 담긴 핸들러 함수를 연결하면 웹 요청 처리 시 미들웨어를 차례로 수행한 후 마지막에 핸들러 함수로 제어권을 넘긴다. startHandler는 체인 형태로 연결된 미들웨어의 시작점을 가리키고 있다.