使用 net/http 实现 REST API,通过路由分发请求至控制器处理。1. 定义 User 模型用于 JSON 序列化;2. 在 controllers 中实现 GetUsers 和 GetUserByID 处理函数,返回内存用户数据;3. routes/router.go 注册路径路由;4. main.go 启动服务并监听 8080 端口。访问 /users 可获取用户列表。后续可引入 mux 路由、中间件、数据库等增强功能。

用 Golang 开发一个简易的 REST API 服务并不复杂,核心是使用标准库 net/http 搭建 HTTP 服务,结合路由分发请求到对应的控制器处理。下面一步步说明如何组织一个结构清晰、可扩展的简易项目。
初始化项目结构
先创建项目目录,建议采用简单的 MVC 风格划分:
main.go – 程序入口,启动 HTTP 服务routes/ – 路由定义controllers/ – 处理请求逻辑models/ – 数据结构定义(可选)
示例目录结构:
rest-api/├── main.go├── routes/│ └── router.go├── controllers/│ └── user_controller.go└── models/ └── user.go
定义数据模型
在 models/user.go 中定义一个简单的用户结构体:
立即学习“go语言免费学习笔记(深入)”;
type User struct {
ID int `json:”id”`
Name string `json:”name”`
Email string `json:”email”`
}
这是一个用于 JSON 序列化的基础模型。
编写控制器逻辑
在 controllers/user_controller.go 中实现几个简单的 REST 接口:
package controllers
import ( “encoding/json” “net/http”)
var users = []models.User{ {ID: 1, Name: “Alice”, Email: “alice@example.com”}, {ID: 2, Name: “Bob”, Email: “bob@example.com”},}
func GetUsers(w http.ResponseWriter, r *http.Request) { w.Header().Set(“Content-Type”, “application/json”) json.NewEncoder(w).Encode(users)}
func GetUserByID(w http.ResponseWriter, r *http.Request) { id := r.URL.Path[len(“/users/”):]
for _, u := range users { if strconv.Itoa(u.ID) == id { w.Header().Set(“Content-Type”, “application/json”) json.NewEncoder(w).Encode(u) return } } http.Error(w, “User not found”, http.StatusNotFound)}
这里实现了获取所有用户和根据 ID 获取单个用户的接口。
设置路由分发
在 routes/router.go 中注册路由:
package routes
import ( “net/http” “your-project/controllers”)
func SetupRoutes() { http.HandleFunc(“/users”, controllers.GetUsers) http.HandleFunc(“/users/”, controllers.GetUserByID) // 注意尾部斜杠匹配}
使用标准库的 http.HandleFunc 注册路径与处理函数的映射。注意路径顺序,更具体的应放在后面避免覆盖。
启动主服务
在 main.go 中导入并启动路由:
package main
import ( “log” “your-project/routes”)
func main() { routes.SetupRoutes()
log.Println(“Server starting on :8080”) log.Fatal(http.ListenAndServe(“:8080”, nil))}
运行后访问 http://localhost:8080/users 即可看到用户列表。
小结与优化建议
这个简易 REST API 使用了 Go 标准库,无需引入第三方框架。适合学习或小型项目。后续可改进点包括:
使用 gorilla/mux 或 chi 增强路由功能(如路径参数、方法限制)加入中间件处理日志、CORS、认证等连接数据库替代内存变量添加错误统一返回格式
基本上就这些,不复杂但容易忽略细节,比如 Header 设置和 JSON 编码错误处理。
以上就是Golang 如何开发一个简易 REST API 服务_Golang HTTP 路由与控制器项目的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1423637.html
微信扫一扫
支付宝扫一扫