Golang -リクエストからクエリ値を取得

今回は、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パッケージ
  • 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を取得しています。

コメントを残す