Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang melaksanakan http

golang melaksanakan http

王林
王林asal
2023-05-22 15:33:491523semak imbas

1. Pengenalan
Dengan peningkatan populariti RESTful API, semakin ramai pembangun cuba membangunkan perkhidmatan http mereka sendiri. Sebagai bahasa yang cekap dan sangat selari, perpustakaan net/http golang boleh membantu kami membina perkhidmatan http yang boleh dipercayai dan berprestasi tinggi dengan mudah. Hari ini kita akan belajar cara menggunakan golang untuk melaksanakan http.

2. Penyediaan
Kami perlu memasang persekitaran golang terlebih dahulu dan menggunakan alat pengurusan pakej golang go mod untuk menguruskan kebergantungan pakej kami.

3. Golang melaksanakan http
Kita boleh menggunakan pustaka net/http golang untuk melaksanakan perkhidmatan http adalah seperti berikut:

1 pakej
Kami perlu mengimport pakej net/http untuk menggunakan antara muka berkaitan perkhidmatan http yang disediakannya, dan kami menggunakan pakej fmt untuk mengeluarkan log.

import (
    "fmt"
    "net/http"
)

2. Laksanakan perkhidmatan http
Kami boleh melaksanakan perkhidmatan http dengan memanggil antara muka yang disediakan oleh perpustakaan net/http. Antaranya, http.HandleFunc digunakan untuk mendaftar laluan. Parameter resp dan req dalam fungsi panggil balik masing-masing mewakili respons dan permintaan.

func main() {
    http.HandleFunc("/", myHandler)
    http.ListenAndServe(":8080", nil)
}

func myHandler(resp http.ResponseWriter, req *http.Request) {
    fmt.Println("收到请求!")
    resp.Write([]byte("Hello world!"))
}

3. Jalankan perkhidmatan http
Kami masukkan direktori akar projek pada baris arahan, dan kemudian laksanakan arahan berikut:

go run main.go

Pada masa ini, kami masukkan http:/ / dalam pelayar /localhost:8080, anda boleh melihat "Hello world!". Ini adalah pelaksanaan perkhidmatan http yang lengkap.

4. Padanan laluan
Dalam pembangunan sebenar, kita perlu menentukan logik pemprosesan yang berbeza untuk laluan yang berbeza. Pakej http dalam golang menyediakan kaedah padanan laluan yang mudah, iaitu menggunakan fungsi http.HandleFunc untuk mendaftar laluan.

Dalam contoh di atas, kami menggunakan aksara penghalaan lalai "/", yang bermaksud bahawa semua permintaan yang kami terima akan dihantar kepada myHandler untuk diproses. Dalam aplikasi praktikal, kita biasanya perlu menentukan logik pemprosesan yang berbeza untuk laluan yang berbeza. Padanan laluan boleh dicapai dengan cara berikut:

http.HandleFunc("/user", userHandler)
http.HandleFunc("/book", bookHandler)

Dengan cara ini, apabila http://localhost:8080/user diminta, fungsi userHandler akan dilaksanakan apabila http://localhost:8080/; buku diminta, Fungsi bookHandler akan dilaksanakan.

5. Middleware
Middleware ialah mod yang sangat biasa, yang memainkan peranan penting dalam proses pemprosesan permintaan http. Pustaka http dalam golang menyediakan cara mudah untuk melaksanakan perisian tengah Kita boleh menggunakan http.HandlerFunc untuk merangkum fungsi untuk melaksanakan perisian tengah.

Berikut ialah contoh middleware ringkas untuk merekodkan masa permintaan semasa:

func logMiddleware(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        start := time.Now()
        next(w, r)
        fmt.Printf("%s %s
", r.Method, r.URL.Path, time.Since(start))
    }
}

http.HandleFunc("/", logMiddleware(myHandler))

Dalam kod ini, kami mentakrifkan perisian tengah logMiddleware dan membungkus myHandler di dalamnya. Nilai pulangan bagi fungsi logMiddleware ialah fungsi yang akan menerima parameter ResponseWriter dan Request, mencetak kaedah, laluan dan masa pemprosesan permintaan semasa di dalam fungsi, dan akhirnya memanggil seterusnya untuk meneruskan pelaksanaan. Dalam aplikasi praktikal, kita boleh menambah lebih logik pada pelaksanaan logMiddleware, seperti pengesahan identiti, pengesahan parameter permintaan, dsb.

6 Pengendalian ralat
Dalam aplikasi praktikal, kami perlu menangani ralat yang mungkin berlaku dalam permintaan http. Pustaka http golang menyediakan kaedah pengendalian ralat yang mudah, menggunakan fungsi http.Error.

Berikut ialah contoh pengendalian ralat mudah:

func myHandler(w http.ResponseWriter, r *http.Request) {
    file, err := os.Open("abc.txt")
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    defer file.Close()
}

Dalam kod ini, kami cuba membuka fail yang tidak wujud dan menggunakan http.Error untuk mengembalikan respons ralat apabila ralat berlaku. Parameter pertama http.Error mewakili respons; parameter kedua ialah mesej ralat dan parameter ketiga ialah kod status http.

7. Ringkasan
Dalam artikel ini, kami memperkenalkan cara menggunakan golang untuk melaksanakan perkhidmatan http. Secara khusus, kami mempelajari cara menggunakan perpustakaan net/http golang untuk melaksanakan perkhidmatan http, padanan laluan, perisian tengah dan pengendalian ralat. Untuk pemula, menguasai mata pengetahuan ini sudah cukup untuk menulis perkhidmatan http yang mudah.

Atas ialah kandungan terperinci golang melaksanakan http. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Cara menjalankan golangArtikel seterusnya:Cara menjalankan golang