지난 포스팅
웹 프로그래밍 with Golang 1 - Hello, World!
웹 프로그래밍 with Golang 2 - 템플릿 문법
라우팅 (Routing)
라우팅은 Restful API를 구축하기 위해 필수적인 기능이라고 할 수 있습니다.
라우트(route)는 사전적 의미로 (특정한 루트를 따라 무엇을) 보내다[전송하다]
라는 의미를 가지고 있습니다.
즉, 라우팅은 사용자 요청이 들어왔을 때 해당 요청을 처리할 수 있는 서비스로 보내는 것을 의미합니다.
라우터 패키지
라우터를 만들기 위해서는 http.ServeMux
를 사용하면 됩니다.
하지만 편리한 방법이 아니기 때문에 서드파티 패키지를 주로 사용합니다.
유명한 패키지로는
- gin (Star: 57.2k)
- gorilla/mux (Star: 16.3k)
가 있습니다.
gin
은 Node.js의 Express 수준의 프레임워크로 내장 패키지인 net/http
를 대체합니다.
반면에 gorilla/mux
는 라우터 기능이 중점이며 net/http
모듈과 함께 사용됩니다.
라우팅에 대해 이해하기 위하여 이번 튜토리얼에서는 gorilla/mux
를 사용하겠습니다.
gin
은 추후 챕터에서 다루겠습니다.
Gorilla Mux 설치
1 | go get -u github.com/gorilla/mux |
go get
으로 패키지를 설치합니다.
라우터 코드
1 | package main |
라우터는 기존에 알고있던 http.HandleFunc
와 유사합니다.
mux.Vars
메서드를 이용하여 URL의 Path Parameter를 가져올 수 있습니다.
이밖에도 정규식을 활용하여 다양한 형태의 URL을 파싱할 수 있습니다.
라우터 테스트
{title}과 {page}를 임의로 설정하여 요청을 보내겠습니다.
주소/books/Harry Poter/page/5
메서드 제한하기
별도로 메서드(Method)를 제한하지 않으면 패턴이 일치하는 모든 요청에 대해 응답할 것입니다.
Restful API에는 4가지의 메서드를 사용합니다. (GET, POST, DELETE, PATCH)
용도에 맞게 메서드를 다음과 같이 제한시킬 필요가 있습니다.
1 | r.HandleFunc("/books/{title}", CreateBook).Methods("POST") |
Restful API에 대한 이해가 부족하다면 좋은 REST API 설계 방법에 대한 고찰이라는 포스팅을 한번 보시길 바랍니다.
다음 시간에는 구조화된 Data를 주고 받기 위해 Form Value & JSON을 활용하는 법에 대해 배워보겠습니다.