当前位置: 首页 > news >正文

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

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

✅ 一、准备工作

  1. 安装 Go

    • 官网下载地址

    • 安装后执行:

      go version
      
  2. 安装 VS Code 插件

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

    • 设置 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用户信息

请添加图片描述

http://www.xdnf.cn/news/228025.html

相关文章:

  • 03_spring配置优先级
  • 回归分析丨基于R语言复杂数据回归与混合效应模型【多水平/分层/嵌套】技术与代码
  • 数智化招标采购系统针对供应商管理解决方案(采购如何管控供应商)
  • Qt/C++面试【速通笔记六】—Qt 中的线程同步
  • 合并两个有序数组
  • DataWorks Copilot 集成 Qwen3-235B-A22B混合推理模型,AI 效能再升级!
  • uniapp 实现时分秒 分别倒计时
  • 大数据平台与数据仓库的核心差异是什么?
  • MySQL RR (Repeatable Read) 隔离级别规则细节
  • 【计算机视觉】目标检测:深度解析Detectron2:Meta开源目标检测与图像分割框架实战指南
  • Linux Nginx网站服务【完整版】
  • 从高端制造到民生场景:天元轻量化软件的“破局”之路
  • 【QT】编写第一个 QT 程序 对象树 Qt 编程事项 内存泄露问题
  • 大语言模型 06 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机配置 GPT训练基本流程概念
  • ASP.NET MVC​ 入门与提高指南六
  • 一套SaaS ERP管理系统源码,支持项目二开商用,SpringBoot+Vue+ElementUI+UniAPP
  • 11.Spring Boot 3.1.5 中使用 SpringDoc OpenAPI(替代 Swagger)生成 API 文档
  • 若依Vue + Spring Boot:前后端参数传递实践与 @RequestParam、@RequestBody、@ModelAttribute 使用详解
  • 解决vscode cmake提示检测到 #include 错误
  • 【Hive入门】Hive高级特性:事务表与ACID特性详解
  • Ubuntu 24.04 终端美化
  • 第一章 OpenCV篇-配置及基础知识-Python
  • 常用开发脚本工具推荐
  • java网络原理5
  • 【C++】数据结构 九种排序算法的实现
  • python对接马来西亚股票完整代码
  • 微前端框架选型指南
  • Go并发控制模式:基于Channel的实践与优化
  • Github 2025-04-30 C开源项目日报 Top10
  • 3dgs渲染 Nvdiffrast