Go 写一个简单的Get和Post请求服务
Go 写一个简单的Get和Post请求服务
✅ 一、准备工作
-
安装 Go
-
官网下载地址
-
安装后执行:
go version
-
-
安装 VS Code 插件
- 在 VS Code 插件市场搜索并安装插件:
Go
(由 Go 团队提供)
- 在 VS Code 插件市场搜索并安装插件:
-
配置环境变量(可选)
- 设置
GOPATH
(默认是~/go
),添加到PATH
- 设置
✅ 二、创建 Go 项目结构
创建目录
mkdir go-backend
进入对应目录
cd go-backend
初始化go.mod模块管理文件
go mod init go-backend
✅ 三、创建 HTTP 服务
整体目录结构如下所示:
go-backend/
├── handler/
│ └── user_handler.go
├── model/
│ └── user.go
├── router/
│ └── router.go
├── service/
│ └── user_service.go
├── go.mod
├── go.sum
├── main.go
1. main.go
package mainimport ("fmt""log""net/http""go-backend/router"
)func main() {r := router.InitRouter()fmt.Println("Server running at http://localhost:8083")log.Fatal(http.ListenAndServe(":8083", r))
}
2. router/router.go
package routerimport ("github.com/gorilla/mux""go-backend/handler"
)func InitRouter() *mux.Router {r := mux.NewRouter()r.HandleFunc("/api/users", handler.GetUsers).Methods("GET")r.HandleFunc("/api/users", handler.CreateUser).Methods("POST")return r
}
3. handler/user_handler.go
package handlerimport ("encoding/json""net/http""go-backend/service""go-backend/model"
)func GetUsers(w http.ResponseWriter, r *http.Request) {users := service.GetUserList()w.Header().Set("Content-Type", "application/json")json.NewEncoder(w).Encode(users)
}func CreateUser(w http.ResponseWriter, r *http.Request) {var user model.User_ = json.NewDecoder(r.Body).Decode(&user)savedUser := service.SaveUser(user)w.Header().Set("Content-Type", "application/json")json.NewEncoder(w).Encode(savedUser)
}
4. model/user.go
package modeltype User struct {ID int `json:"id"`Name string `json:"name"`
}
5. service/user_service.go
package serviceimport "go-backend/model"var users = []model.User{{ID: 1, Name: "Alice"},{ID: 2, Name: "Bob"},
}func GetUserList() []model.User {return users
}func SaveUser(u model.User) model.User {u.ID = len(users) + 1users = append(users, u)return u
}
安装mux
go get -u github.com/gorilla/mux
如果提示报错,下载超时的话,更换代理
go env -w GOPROXY=https://goproxy.cn,direct
更换代理之后再运行上述命令
go get -u github.com/gorilla/mux
接着启动main
✅ 四、测试get请求和post请求
GET 请求
POST 请求
再次请求GET,可以拿到刚才保存的User用户信息