Query Parameters and Forms
So'rov parametrlari va formalar
URL manzilidan keyingi ?nomi=qiymat&boshqa=qiymat2 qismi — "query parametrlari" deyiladi (masalan qidiruv, filtr, sahifalash uchun ishlatiladi).
package main
import (
"fmt"
"net/http"
"net/http/httptest"
)
func searchHandler(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query().Get("q")
limit := r.URL.Query().Get("limit")
fmt.Fprintf(w, "qidiruv: %s, limit: %s", query, limit)
}
func main() {
req := httptest.NewRequest("GET", "/search?q=golang&limit=10", nil)
rec := httptest.NewRecorder()
searchHandler(rec, req)
fmt.Println(rec.Body.String())
}r.URL.Query() barcha query parametrlarini xarita (map) ko'rinishida qaytaradi, .Get(kalit) esa bittasini oladi (bo'lmasa bo'sh matn qaytaradi, xato chiqmaydi). Forma orqali yuborilgan ma'lumot (application/x-www-form-urlencoded) uchun esa r.FormValue(kalit) ishlatiladi — u ham query, ham forma tanasidan qidiradi.
>_ Exercise
Sahifalash parametrlarini o'qiydigan handler yozing.
- •"page" va "size" query parametrlarini o'qing
- •"sahifa: <page>, o'lcham: <size>" ko'rinishida javob bering
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
r.URL.Query().Get(kalit) — URL'dagi ?kalit=qiymat ko'rinishidagi parametrlarni o'qishning standart usuli.
NEXT UP
HTTP Capstone: Mini REST API
$ go run main.go
Kodingizni ishga tushiring