Rumah > Artikel > pembangunan bahagian belakang > Pelayan Api Perkhidmatan Web dalam Go
Dalam bab ini, kami akan membentangkan pengaturcaraan web go and Json untuk mencipta perkhidmatan web API dengan jenis data respons dalam bentuk API.
package main import "encoding/json" import "net/http" import "fmt" type student struct { ID string Name string Grade int } var data = []student{ student{"E001", "ethan", 21}, student{"W001", "wick", 22}, student{"B001", "bourne", 23}, student{"B002", "bond", 23}, }
Struktur pelajar di atas digunakan sebagai jenis elemen kepingan data sampel, disimpan dalam pembolehubah data.
Seterusnya, cipta fungsi pengguna(), untuk mengendalikan titik akhir /users. Dalam fungsi ini terdapat proses pengesanan jenis permintaan melalui sifat r.Method(), untuk mengetahui sama ada jenis permintaan ialah Post atau Get atau sesuatu yang lain.
func users(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { var result, err = json.Marshal(data) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(result) return } http.Error(w, "", http.StatusBadRequest) }
Jika permintaan adalah GET (dapatkan semula data), maka data tersebut dikodkan dalam JSON
digunakan sebagai respons.
Pernyataan w.Header().Set("Content-Type", "application/json") digunakan untuk
tentukan jenis tindak balas, iaitu sebagai JSON. Manakala r.Write()
digunakan untuk mendaftarkan data sebagai respons.
Jika tidak, jika permintaan tidak sah, respons ditetapkan sebagai ralat menggunakan
Fungsi http.Error().
Sediakan juga pengendali untuk titik akhir /user. Perbezaan antara titik akhir ini dan
/pengguna di atas ialah:
Titik akhir /users mengembalikan semua data sampel sedia ada (tatasusunan).
Titik akhir /user mengembalikan hanya sekeping data, diambil daripada data
sampel berdasarkan IDnya. Pada titik akhir ini, pelanggan mesti menghantar
juga maklumat ID data yang dicari
func user(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { var id = r.FormValue("id") var result []byte var err error for _, each := range data { if each.ID == id { result, err = json.Marshal(each) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(result) return } } http.Error(w, "User not found", http.StatusNotFound) return } http.Error(w, "", http.StatusBadRequest) }
Kaedah r.FormValue() digunakan untuk mendapatkan semula data borang yang dihantar daripada
pelanggan, dalam konteks ini data yang dirujuk ialah ID.
Dengan menggunakan ID ini, data yang berkaitan dicari. Jika ada, maka
dikembalikan sebagai balasan. Jika tidak ada maka ralat 400, Permintaan Buruk
dikembalikan dengan mesej Pengguna Tidak Ditemui.
Akhir sekali, laksanakan dua pengendali di atas.
func main() { http.HandleFunc("/users", users) http.HandleFunc("/user", user) fmt.Println("starting web server at http://localhost:8080/") http.ListenAndServe(":8080", nil) }
Jalankan program, kini pelayan web disiarkan secara langsung dan data boleh digunakan.
Atas ialah kandungan terperinci Pelayan Api Perkhidmatan Web dalam Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!