Pelayan Api Perkhidmatan Web dalam Go

PHPz
Lepaskan: 2024-07-23 13:36:31
asal
996 orang telah melayarinya

Web Service Api Server in Go

Dalam bab ini, kami akan membentangkan pengaturcaraan web go and Json untuk mencipta perkhidmatan web API dengan jenis data respons dalam bentuk API.

  1. API Penciptaan WEB Sediakan beberapa data sampel terlebih dahulu
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},
}

Salin selepas log masuk

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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!