概述
Golang 是一门快速、安全,易于使用的程序语言,它被广泛地用于Web和网络编程领域。本文将详细介绍如何使用 Golang 编写一个能够接收 HTTP GET/POST 请求并返回 JSON 数据的 Web 服务器。
准备工作
go get
github.com/gorilla/muxgithub.com/unrolled/render
编写代码
main.go
package main
import (
"encoding/json" //用于 JSON 数据的编码和解码
"net/http" // 用于 HTTP 请求和响应
"github.com/unrolled/render" // JSON 渲染库
"github.com/gorilla/mux" // 路由库
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/user/{name}", getUser).Methods("GET")
r.HandleFunc("/user", addUser).Methods("POST")
http.ListenAndServe(":8080", r)
}
func getUser(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
name := params["name"]
// 创建一个用户对象
user := User{Name: name, Age: 25, Email: "test@test.com"}
// 将用户对象编码为 JSON 格式
jsonData, _ := json.Marshal(user)
// 将 JSON 数据渲染到 HTTP 响应中
renderer := render.New()
renderer.JSON(w, http.StatusOK, string(jsonData))
}
func addUser(w http.ResponseWriter, r *http.Request) {
var user User
// 从 HTTP POST 请求中解码 JSON 数据,并存储到用户对象中
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// 将用户对象编码为 JSON 格式
jsonData, _ := json.Marshal(user)
// 将 JSON 数据渲染到 HTTP 响应中
renderer := render.New()
renderer.JSON(w, http.StatusOK, string(jsonData))
}
代码解释
UserUsergithub.com/unrolled/render
热门推荐:
mainmux.Router
/user/{name}{name}/user
getUseraddUser/user/{name}/user
运行程序
保存代码之后,使用以下命令编译并运行程序:
go build main.go
./main
http://localhost:8080/user/John
结论
github.com/gorilla/muxgithub.com/unrolled/render
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:golang接收get/post请求并返回json数据 - Python技术站