GoDasturchi
Routing and Path Parameters

Routing and Path Parameters

Yo'naltirish va yo'l parametrlari

Ko'p API'larda yo'lning bir qismi o'zgaruvchan bo'ladi — masalan /users/42 dagi 42. Zamonaviy Go'da http.ServeMux buni to'g'ridan-to'g'ri qo'llab-quvvatlaydi.

example.go
package main

import (
	"fmt"
	"net/http"
	"net/http/httptest"
)

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("GET /users/{id}", func(w http.ResponseWriter, r *http.Request) {
		id := r.PathValue("id")
		fmt.Fprintf(w, "foydalanuvchi id: %s", id)
	})

	req := httptest.NewRequest("GET", "/users/42", nil)
	rec := httptest.NewRecorder()
	mux.ServeHTTP(rec, req)
	fmt.Println(rec.Body.String())
}

"GET /users/{id}" yozuvida GET — faqat shu metodga mos kelishini, {id} esa "bu joyda istalgan qiymat bo'lishi mumkin, uni id deb belgila" degan o'zgaruvchan qismni bildiradi. Handler ichida r.PathValue("id") orqali o'sha qiymatni olamiz. Bu — API'larda /users/42, /users/100 kabi son-son yo'llarni bitta handler bilan boshqarishning standart usuli.

>_ Exercise

Mahsulot ID'si bo'yicha ma'lumot qaytaradigan yo'l yozing.

  • "GET /products/{id}" yo'lini ro'yxatdan o'tkazing
  • r.PathValue("id") ni oling
  • "mahsulot: <id>" ko'rinishida javob bering

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

{nom} shablonlari va r.PathValue(nom) yordamida bitta handler ko'plab o'xshash yo'llarga (masalan turli ID'lar) xizmat qila oladi.

NEXT UP

Request Body Parsing

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Routing and Path Parameters

Yo'naltirish va yo'l parametrlari

Ko'p API'larda yo'lning bir qismi o'zgaruvchan bo'ladi — masalan /users/42 dagi 42. Zamonaviy Go'da http.ServeMux buni to'g'ridan-to'g'ri qo'llab-quvvatlaydi.

example.go
package main

import (
	"fmt"
	"net/http"
	"net/http/httptest"
)

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("GET /users/{id}", func(w http.ResponseWriter, r *http.Request) {
		id := r.PathValue("id")
		fmt.Fprintf(w, "foydalanuvchi id: %s", id)
	})

	req := httptest.NewRequest("GET", "/users/42", nil)
	rec := httptest.NewRecorder()
	mux.ServeHTTP(rec, req)
	fmt.Println(rec.Body.String())
}

"GET /users/{id}" yozuvida GET — faqat shu metodga mos kelishini, {id} esa "bu joyda istalgan qiymat bo'lishi mumkin, uni id deb belgila" degan o'zgaruvchan qismni bildiradi. Handler ichida r.PathValue("id") orqali o'sha qiymatni olamiz. Bu — API'larda /users/42, /users/100 kabi son-son yo'llarni bitta handler bilan boshqarishning standart usuli.

>_ Exercise

Mahsulot ID'si bo'yicha ma'lumot qaytaradigan yo'l yozing.

  • "GET /products/{id}" yo'lini ro'yxatdan o'tkazing
  • r.PathValue("id") ni oling
  • "mahsulot: <id>" ko'rinishida javob bering

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

{nom} shablonlari va r.PathValue(nom) yordamida bitta handler ko'plab o'xshash yo'llarga (masalan turli ID'lar) xizmat qila oladi.

NEXT UP

Request Body Parsing