Panduan lengkap pemprosesan permintaan Golang
Golang ialah bahasa pengaturcaraan yang cekap, ringkas dan sangat bersesuaian yang digunakan secara meluas dalam bidang pembangunan web dan pengaturcaraan rangkaian. Dalam pengaturcaraan rangkaian, pengendalian permintaan HTTP adalah bahagian yang penting. Artikel ini akan memperkenalkan cara mengendalikan permintaan HTTP di Golang, termasuk membuat pelayan HTTP, memproses permintaan GET dan POST, penghuraian parameter, operasi kuki, dsb., dan menyediakan contoh kod terperinci.
Pertama, kita perlu mencipta pelayan HTTP untuk menerima permintaan. Di Golang, anda boleh menggunakan kaedah ListenAndServe
yang disediakan oleh pakej net/http
untuk mencipta pelayan HTTP yang mudah Kodnya adalah seperti berikut: net/http
包提供的ListenAndServe
方法创建一个简单的HTTP服务器,代码如下:
package main import ( "net/http" "fmt" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }
在上面的代码中,我们通过http.HandleFunc
方法指定一个请求处理函数handler
来处理根路径("/")的请求。然后通过http.ListenAndServe
方法启动一个监听在8080端口的HTTP服务器。
接下来,我们看看如何处理GET请求。GET请求可以通过URL参数传递数据,我们可以通过r.URL.Query()
方法获取这些参数。下面是一个处理GET请求的示例代码:
func handler(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() name := query.Get("name") fmt.Fprintf(w, "Hello, %s!", name) }
在上面的代码中,我们通过query.Get
方法获取名为"name"的URL参数,并将其输出到响应中。
与处理GET请求类似,处理POST请求也很简单。我们可以通过r.ParseForm()
方法解析POST请求的表单数据。以下是一个处理POST请求的示例代码:
func handler(w http.ResponseWriter, r *http.Request) { r.ParseForm() name := r.Form.Get("name") fmt.Fprintf(w, "Hello, %s!", name) }
在上面的代码中,我们通过r.Form.Get
方法获取名为"name"的表单数据,并将其输出到响应中。
除了获取URL参数和表单数据外,有时候还需要处理JSON数据或其他格式的请求体。我们可以使用json.Unmarshal
方法对JSON数据进行解析。以下是一个处理JSON数据的示例代码:
import ( "encoding/json" "io/ioutil" ) type Person struct { Name string `json:"name"` } func handler(w http.ResponseWriter, r *http.Request) { body, _ := ioutil.ReadAll(r.Body) var person Person json.Unmarshal(body, &person) fmt.Fprintf(w, "Hello, %s!", person.Name) }
在上面的示例中,我们定义了一个Person
结构体来解析包含"name"字段的JSON数据,并输出到响应中。
最后,我们来看看如何进行Cookie操作。在Golang中,可以使用http.SetCookie
方法设置Cookie,通过r.Cookie
方法获取Cookie。以下是一个设置和获取Cookie的示例代码:
func handler(w http.ResponseWriter, r *http.Request) { cookie := &http.Cookie{ Name: "username", Value: "john_doe", } http.SetCookie(w, cookie) username, err := r.Cookie("username") if err != nil { fmt.Fprintf(w, "Error getting cookie") } else { fmt.Fprintf(w, "Hello, %s!", username.Value) } }
在上面的代码中,我们首先设置了一个名为"username"的Cookie,然后通过r.Cookie
rrreee
handler
untuk mengendalikan permintaan untuk laluan akar ("/"). Kemudian mulakan pelayan HTTP mendengar pada port 8080 melalui kaedah http.ListenAndServe
. 2. Mengendalikan permintaan GET🎜🎜Seterusnya, mari lihat cara mengendalikan permintaan GET. Permintaan GET boleh menghantar data melalui parameter URL dan kami boleh mendapatkan parameter ini melalui kaedah r.URL.Query()
. Berikut ialah contoh kod yang mengendalikan permintaan GET: 🎜rrreee🎜Dalam kod di atas, kami mendapat parameter URL bernama "nama" melalui kaedah query.Get
dan mengeluarkannya kepada respons. 🎜🎜3. Memproses permintaan POST🎜🎜Sama seperti memproses permintaan GET, memproses permintaan POST juga sangat mudah. Kami boleh menghuraikan data borang permintaan POST melalui kaedah r.ParseForm()
. Berikut ialah contoh kod yang mengendalikan permintaan POST: 🎜rrreee🎜 Dalam kod di atas, kami mendapat data borang bernama "nama" melalui kaedah r.Form.Get
dan mengeluarkannya ke tengah respons. 🎜🎜4. Penghuraian parameter🎜🎜Selain mendapatkan parameter URL dan data borang, kadangkala ia juga perlu untuk memproses data JSON atau meminta badan dalam format lain. Kita boleh menggunakan kaedah json.Unmarshal
untuk menghuraikan data JSON. Berikut ialah contoh kod untuk memproses data JSON: 🎜rrreee🎜Dalam contoh di atas, kami mentakrifkan struktur Orang
untuk menghuraikan data JSON yang mengandungi medan "nama" dan mengeluarkannya kepada respons. 🎜🎜5. Operasi Kuki🎜🎜Akhir sekali, mari kita lihat cara melaksanakan operasi Kuki. Di Golang, anda boleh menggunakan kaedah http.SetCookie
untuk menetapkan Cookie dan menggunakan kaedah r.Cookie
untuk mendapatkan Cookie. Berikut ialah contoh kod untuk menetapkan dan mendapatkan Kuki: 🎜rrreee🎜Dalam kod di atas, kami mula-mula menetapkan Kuki bernama "nama pengguna", dan kemudian memperoleh Kuki melalui nilai kaedah r.Cookie
dan keluarkannya kepada tindak balas. 🎜🎜Melalui contoh kod di atas, kami telah mempelajari cara mengendalikan permintaan HTTP di Golang, termasuk membuat pelayan HTTP, memproses permintaan GET dan POST, penghuraian parameter, operasi kuki, dsb. Saya harap artikel ini membantu anda, dan anda dialu-alukan untuk terus belajar dan meneroka lebih banyak penggunaan dan ciri Golang. 🎜Atas ialah kandungan terperinci Panduan pemprosesan permintaan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!