Go 写一个简单的Get和Post请求服务

Go 写一个简单的Get和Post请求服务

✅ 一、准备工作

  1. 安装 Go

  2. 安装 VS Code 插件

    • 在 VS Code 插件市场搜索并安装插件:Go(由 Go 团队提供)
  3. 配置环境变量(可选)

    • 设置 GOPATH(默认是 ~/go),添加到 PATH

✅ 二、创建 Go 项目结构

创建目录

bash 复制代码
mkdir go-backend

进入对应目录

bash 复制代码
cd go-backend

初始化go.mod模块管理文件

bash 复制代码
go mod init go-backend

✅ 三、创建 HTTP 服务

整体目录结构如下所示:

tex 复制代码
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

go 复制代码
package main

import (
    "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

go 复制代码
package router

import (
    "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

go 复制代码
package handler

import (
    "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

go 复制代码
package model

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

5. service/user_service.go

go 复制代码
package service

import "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) + 1
    users = append(users, u)
    return u
}

安装mux

bash 复制代码
go get -u github.com/gorilla/mux

如果提示报错,下载超时的话,更换代理

bash 复制代码
go env -w GOPROXY=https://goproxy.cn,direct

更换代理之后再运行上述命令

bash 复制代码
go get -u github.com/gorilla/mux

接着启动main

✅ 四、测试get请求和post请求

GET 请求

POST 请求

再次请求GET,可以拿到刚才保存的User用户信息

相关推荐
源代码•宸5 小时前
大厂技术岗面试之谈薪资
经验分享·后端·面试·职场和发展·golang·大厂·职级水平的薪资
Anastasiozzzz5 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
刘琦沛在进步5 小时前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
机器视觉的发动机5 小时前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
HyperAI超神经5 小时前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
晚霞的不甘6 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频
R_.L6 小时前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
喵叔哟6 小时前
06-ASPNETCore-WebAPI开发
服务器·后端·c#
Zach_yuan6 小时前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
云姜.6 小时前
java多态
java·开发语言·c++