2015-02-07 4 views
0

API 요청을 처리하기 위해 고릴라 멀티플렉서를 사용하고 싶습니다.컬 요청을 처리하는 Gorilla Mux

명령이 될 것입니다 뭔가 같은 : http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello

은 내가 다음 핸들러로 제공하고

컬 :

router.Methods("GET").Path("/api/myapiname/{version}").HandlerFunc(apihandler) 

func apihandler(rw http.ResponseWriter, q *http.Request) { 
    vars := mux.Vars(q) 
    log.Println(vars["version"]) 
    log.Println(q.FormValue("number")) 
    log.Println(q.FormValue("target")) 
    log.Println(q.FormValue("message")) 
} 

그러나 curl 요청에 대해 난 단지 number하지 target의 형태로 값을 얻을 및 message

corr이란 무엇입니까? Gorilla mux를 사용하여 API 요청을 처리하는 방법? 하위 라우팅이 필요합니까?

난 그냥 형태 http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello의 HTTP 요청을 수신하고

덕분에 가치를 위해 키를 매핑 할 수 있어야합니다!

+1

나를 위해 일합니다. 라우터를 어디에 등록했는지 보여 줄 수 있습니까? – jmaloney

+0

그냥'router : = mux.NewRouter()'에 등록하십시오. –

답변

1

라우터에 검색어를 추가하려고 할 수 있습니다.이 경우 모든지도가 하나의지도에 표시됩니다.

router.Methods("GET").Path("/api/myapiname/{version}").Queries("number", "{number:[0-9]+}", "target", "{target:[^&]+}", "message", "{message:[^&]+}").HandlerFunc(apihandler) 

func apihandler(rw http.ResponseWriter, q *http.Request) { 
    vars := mux.Vars(q) 
    log.Println(vars["version"]) 
    log.Println(vars("number")) 
    log.Println(vars("target")) 
    log.Println(vars("message")) 
}