Golang 是一門受歡迎的編程語言,它通過HTTP提供了強(qiáng)大的創(chuàng)建RESTful API的能力。JSON被廣泛地用來進(jìn)行信息交換,而使用 golang 和 JSON 可以輕松地創(chuàng)建 RESTful API 接口。
import ( "encoding/json" "log" "net/http" "github.com/gorilla/mux" ) type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"` } var users []User = []User{ {ID: 1, Name: "Tom", Email: "tom@example.com"}, {ID: 2, Name: "Jerry", Email: "jerry@example.com"}, } func main() { router := mux.NewRouter() router.HandleFunc("/users", GetUsers).Methods("GET") router.HandleFunc("/users/{id}", GetUser).Methods("GET") log.Fatal(http.ListenAndServe(":8000", router)) } func GetUsers(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(users) } func GetUser(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") params := mux.Vars(r) for _, user := range users { if strconv.Itoa(user.ID) == params["id"] { json.NewEncoder(w).Encode(user) return } } http.Error(w, "User not found", http.StatusNotFound) }
代碼中的User
結(jié)構(gòu)體表示了需要存儲(chǔ)的信息,并使用JSON 標(biāo)簽來定義序列化和反序列化時(shí)對(duì)應(yīng)的屬性名。 處理HTTP請(qǐng)求的函數(shù)利用encoding/json
包將我們的數(shù)據(jù)轉(zhuǎn)換成JSON格式并發(fā)送到客戶端。
使用的HTTP處理框架是gorilla/mux
, 它簡化了路由的配置和處理HTTP的函數(shù)。定義HTTP路由的函數(shù)使用了常見的RESTful API接口設(shè)計(jì)、HTTP方法和路徑。GetUsers
處理 GET /users 的請(qǐng)求,而GetUser
處理 GET /users/{id} 的請(qǐng)求,其中 {id} 是需要找到的用戶的ID。
運(yùn)行代碼并通過瀏覽器或者HTTP客戶端訪問這些URLs(如:http://localhost:8000/users
或http://localhost:8000/users/1
). 你將得到一個(gè)JSON格式的響應(yīng),包含了用戶信息。