라우터 타입 정의
먼저 router.go 파일을 생성하고 router 타입을 정의해 보자.
▼ router.go
type router struct { // 키: http 메서드 // 값: URL 패턴별로 실행할 HandlerFunc handlers map[string]map[string]http.HandlerFunc }
router 구조체 내부에 handlers 필드를 정의했다. handlers는 또 다른 맵을 값(value)으로 사용한 2차원 맵이다. URL 패턴별로 실행할 핸들러들을 http 메서드별로 정의했다.
router의 handlers 필드 내부의 값을 표현해 보면 표 8-1과 같다.
GET |
키 |
값 |
|
/ |
indexHandler |
/about |
aboutHandler |
|
/users |
retrieveUserCollection |
|
/users/:id |
retrieveUser |
|
/users/:user_id/addresses |
retrieveUserAddressCollection |
|
/users/:user_id/addresses/:address_id |
retrieveUserAddress |
|
POST |
키 |
값 |
|
/users |
createUser |
/users/:user_id/addresses |
createUserAddress |
|
PUT |
키 |
값 |
|
/users/:id |
updateUser |
/users/:user_id/addresses/:address_id |
updateUserAddress |
|
DELETE |
키 |
값 |
|
/users/:id |
deleteUser |
/users/:user_id/addresses/:address_id |
deleteUserAddress |