라우팅과 경로 매개변수
핸들러 등록과 URL 매개변수 파싱
라우팅과 경로 매개변수은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
표준 멀티플렉서의 한계
기본 http.ServeMux는 경로 매개변수(예: /users/{id})나 메서드 기반 라우팅을 지원하지 않습니다. Go 1.22에서 패턴 지원이 향상되었습니다.
Go 1.22의 향상된 패턴
Go 1.22부터 ServeMux는 메서드 접두사와 경로 매개변수를 지원합니다:
mux.HandleFunc("GET /users/{id}", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintln(w, "user:", id)
})r.PathValue
r.PathValue("name")은 URL 패턴에서 이름이 지정된 세그먼트를 추출합니다(Go 1.22 이상).
// Pattern: "GET /products/{category}/{id}"
category := r.PathValue("category")
id := r.PathValue("id")수동 경로 파싱
Go < 1.22를 사용하거나 규칙이 복잡한 경우 strings.Split(r.URL.Path, "/")로 경로 세그먼트를 추출합니다:
parts := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
// /users/42 → ["users", "42"]메서드별 라우팅
단일 핸들러 안에서 메서드별 로직을 처리하려면 r.Method에 switch를 사용합니다:
switch r.Method {
case http.MethodGet:
getHandler(w, r)
case http.MethodPost:
createHandler(w, r)
default:
w.WriteHeader(http.StatusMethodNotAllowed)
}인기 있는 서드파티 라우터
gorilla/mux, chi, httprouter 같은 라이브러리는 정규식 제약 조건, 이름이 지정된 그룹, 미들웨어 체인 및 하위 라우터를 포함한 더 풍부한 라우팅 기능을 제공합니다.
chi 라우터
chi는 net/http 핸들러와 호환되는 가볍고 관용적인 라우터입니다:
r := chi.NewRouter()
r.Get("/users/{id}", getUser)
http.ListenAndServe(":8080", r)쿼리 매개변수
r.URL.Query()에서 쿼리 매개변수를 읽을 수 있으며, 이 함수는 url.Values 맵을 반환합니다:
page := r.URL.Query().Get("page")
if page == "" { page = "1" }와일드카드와 전체 경로 일치
Go 1.22 패턴에서 {name...}은 경로의 나머지 부분과 일치하는 와일드카드입니다:
mux.HandleFunc("/static/{path...}", serveStatic)중첩 라우트
하위 라우터를 사용하거나 공통 접두사로 핸들러를 등록해 관련 라우트를 그룹화하십시오. chi의 r.Route는 접두사에 대한 하위 라우터를 만듭니다.
후행 슬래시 리디렉션
http.ServeMux는 /path/를 /path로 또는 그 반대로 자동 리디렉션합니다. 이를 비활성화하려면 멀티플렉서가 요청을 받기 전에 미들웨어에서 후행 슬래시를 제거하십시오.
빠른 확인
Go 1.22 이상에서 일치한 URL 패턴의 {id} 세그먼트를 어떻게 추출하나요?
복습: 라우팅 및 경로 매개변수
핵심 내용:
- Go 1.22: ServeMux에서 메서드 접두사와 {name} 경로 매개변수 사용
- r.PathValue("name")으로 이름이 지정된 세그먼트 추출
- 메서드별 로직에는 메서드 switch 사용
- 복잡한 라우팅에는 서드파티 라우터(chi, gorilla/mux) 사용
자주 묻는 질문
“라우팅과 경로 매개변수” 강의는 무료인가요?
네 — “라우팅과 경로 매개변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“라우팅과 경로 매개변수”에서 뭘 배우나요?
핸들러 등록과 URL 매개변수 파싱 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“라우팅과 경로 매개변수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- HTTP 서버 만들기
- 라우팅과 경로 매개변수
- 미들웨어 패턴
- 우아한 종료