今回は、URLのQueryを取得する方法についてメモります。
URLパッケージのQuery()を利用
*http.Request.URL.Query().Get(クエリ名)
- 上記のように使用するとクエリ名の値が取得できます。
func getQuery(w http.ResponseWriter, r *http.Request) {
limit, err := strconv.Atoi(r.URL.Query().Get("limit"))
if err != nil {
// limit正常ではない又はlimitクエリがない場合、デフォルトをセット
limit = MSG_FETCH_SIZE
}
}
- r.URL.Query().Get(“limit”):リクエストから「limit」のクエリ値を取得しています。
- 上記の例は、リクエストからlimitの値を取得し、数字に変換しています。変換時にエラーが発生する場合はデフォルトの値をセットします。
httprouter.Paramsを利用

- httprouterのハンドラは3番目のParamsを持っていますが、これを利用してQueryの値を取得できます。

- 上記のParams.ByNameを利用して値を取得できます。
router := httprouter.New()
router.GET("/ws/:room_id", func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
roomId := ps.ByName("room_id")
fmt.Println(roomId)
})
- ハンドラの3番目に「ps httprouter.Params」に注目してください。
- ps.ByName(“room_id”):ByNameを利用してroom_idを取得しています。
