答案:使用Golang标准库构建RESTful API,实现用户管理的增删改查功能。通过net/http处理路由与请求,encoding/json解析数据,sync.Mutex保障并发安全,以map模拟存储,创建、读取、更新和删除用户,并用curl测试接口,展示轻量高效的JSON服务实现过程。

构建一个 JSON 接口服务器是 Golang 的常见应用场景。它轻量、高效,非常适合编写 RESTful API。下面通过一个简单的实战示例,带你一步步实现一个支持增删改查(CRUD)的用户管理接口。
初始化项目结构
创建项目目录并初始化模块:
mkdir go-rest-api
cd go-rest-api
go mod init go-rest-api
我们不依赖第三方框架,仅使用标准库 net/http 和 encoding/json,保持简洁。
定义数据模型和存储
创建一个 User 结构体,并使用 map 模拟内存存储:
立即学习“go语言免费学习笔记(深入)”;
type User struct {
ID int json:”id”
Name string json:”name”
Email string json:”email”
}
用 map 存储用户数据,配合互斥锁保证并发安全:
var (
users = make(map[int]User)
mu = sync.Mutex{}
nextID = 1
)
编写处理函数
每个 HTTP 请求对应一个处理函数。这些函数需满足 http.HandlerFunc 签名。
获取所有用户
func getUsers(w http.ResponseWriter, r *http.Request) {
mu.Lock()
defer mu.Unlock()
var result []User
for _, u := range users {
result = append(result, u)
}
w.Header().Set(“Content-Type”, “application/json”)
json.NewEncoder(w).Encode(result)
}
创建用户
func createUser(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, “只允许 POST 方法”, http.StatusMethodNotAllowed)
return
}
var user User
if err := json.NewDecoder(r.Body).Decode(&user); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
mu.Lock()
defer mu.Unlock()
user.ID = nextID
nextID++
users[user.ID] = user
w.Header().Set(“Content-Type”, “application/json”)
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(user)
}
获取单个用户
func getUser(w http.ResponseWriter, r *http.Request) {
id, _ := strconv.Atoi(r.URL.Path[len(“/users/”):])
mu.Lock()
defer mu.Unlock()
user, exists := users[id]
if !exists {
http.Error(w, “用户不存在”, http.StatusNotFound)
return
}
w.Header().Set(“Content-Type”, “application/json”)
json.NewEncoder(w).Encode(user)
}
更新和删除用户 可以类似实现,分别使用 PUT 和 DELETE 方法,解析路径中的 ID 并操作 map。
注册路由并启动服务器
在 main 函数中设置路由并监听端口:
func main() {
http.HandleFunc(“/users”, func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
getUsers(w, r)
} else if r.Method == http.MethodPost {
createUser(w, r)
}
})
http.HandleFunc(“/users/”, func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
getUser(w, r)
}
})
fmt.Println(“服务器启动在 :8080”)
log.Fatal(http.ListenAndServe(“:8080”, nil))
}
运行服务后,可用 curl 测试:
curl -X POST http://localhost:8080/users
-H “Content-Type: application/json”
-d ‘{“name”: “Alice”, “email”: “alice@example.com”}’
基本上就这些。这个例子展示了如何用 Go 标准库快速搭建一个可用的 JSON 接口服务。虽然没有使用 Gin 或 Echo 等框架,但理解底层机制有助于写出更可控的代码。
以上就是如何使用 Golang 编写一个 JSON 接口服务器_Golang RESTful API 实战演练的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1424001.html
微信扫一扫
支付宝扫一扫