GoDasturchi
Your First HTTP Server

Your First HTTP Server

Birinchi HTTP serveringiz

Endi teskari tomondan qaraymiz: server yozish. net/http paketida server yozish ham xuddi shunday sodda — "qaysi manzilga qanday funksiya javob berishi kerak" deb belgilaysiz.

example.go
package main

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

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/salom", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprint(w, "Salom, dunyo!")
	})

	// Haqiqiy loyihada: http.ListenAndServe(":8080", mux)
	// Bu yerda esa serverni to'g'ridan-to'g'ri sinaymiz:
	req := httptest.NewRequest("GET", "/salom", nil)
	rec := httptest.NewRecorder()
	mux.ServeHTTP(rec, req)

	fmt.Println(rec.Code)
	fmt.Println(rec.Body.String())
}

http.NewServeMux() — so'rovlarni to'g'ri funksiyaga yo'naltiradigan "yo'l ko'rsatuvchi" (router). mux.HandleFunc(yo'l, funksiya) — "bu yo'lga kelgan so'rovni shu funksiya bajarsin" deb belgilaydi. Haqiqiy loyihada http.ListenAndServe(":8080", mux) chaqirib, server tinglashni boshlaydi va abadiy ishlab turadi — biz esa bu interaktiv muhitda uni to'xtatib bo'lmasligi uchun httptest.NewRecorder bilan sinaymiz (buni keyingi darsda batafsil ko'ramiz).

>_ Exercise

"/vaqt" yo'liga javob beradigan handler yozing.

  • http.NewServeMux() yarating
  • "/vaqt" yo'liga "Hozir dars vaqti!" deb javob beradigan HandleFunc qo'shing
  • httptest bilan so'rov yuborib, javobni chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

http.NewServeMux + HandleFunc — HTTP serverning yuragi: qaysi yo'lga qaysi funksiya javob berishini belgilaydi.

NEXT UP

HTTP Handler Functions

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Your First HTTP Server

Birinchi HTTP serveringiz

Endi teskari tomondan qaraymiz: server yozish. net/http paketida server yozish ham xuddi shunday sodda — "qaysi manzilga qanday funksiya javob berishi kerak" deb belgilaysiz.

example.go
package main

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

func main() {
	mux := http.NewServeMux()
	mux.HandleFunc("/salom", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprint(w, "Salom, dunyo!")
	})

	// Haqiqiy loyihada: http.ListenAndServe(":8080", mux)
	// Bu yerda esa serverni to'g'ridan-to'g'ri sinaymiz:
	req := httptest.NewRequest("GET", "/salom", nil)
	rec := httptest.NewRecorder()
	mux.ServeHTTP(rec, req)

	fmt.Println(rec.Code)
	fmt.Println(rec.Body.String())
}

http.NewServeMux() — so'rovlarni to'g'ri funksiyaga yo'naltiradigan "yo'l ko'rsatuvchi" (router). mux.HandleFunc(yo'l, funksiya) — "bu yo'lga kelgan so'rovni shu funksiya bajarsin" deb belgilaydi. Haqiqiy loyihada http.ListenAndServe(":8080", mux) chaqirib, server tinglashni boshlaydi va abadiy ishlab turadi — biz esa bu interaktiv muhitda uni to'xtatib bo'lmasligi uchun httptest.NewRecorder bilan sinaymiz (buni keyingi darsda batafsil ko'ramiz).

>_ Exercise

"/vaqt" yo'liga javob beradigan handler yozing.

  • http.NewServeMux() yarating
  • "/vaqt" yo'liga "Hozir dars vaqti!" deb javob beradigan HandleFunc qo'shing
  • httptest bilan so'rov yuborib, javobni chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

http.NewServeMux + HandleFunc — HTTP serverning yuragi: qaysi yo'lga qaysi funksiya javob berishini belgilaydi.

NEXT UP

HTTP Handler Functions