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.
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.
Key Takeaway
Key Takeaway:
http.NewServeMux + HandleFunc — HTTP serverning yuragi: qaysi yo'lga qaysi funksiya javob berishini belgilaydi.
NEXT UP
HTTP Handler Functions
$ go run main.go
Kodingizni ishga tushiring