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.mzph.cn/bicheng/79464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪些因素会影响远程视频监控的质量?浅述EasyCVR视频智能诊断技术

在安防领域,无线监控系统凭借其灵活部署、便捷扩展的特性得到广泛应用。然而,实时监控图像清晰度不足、回放调查受限等问题,严重制约了其应用效果。经分析,摄像机性能、线缆质量、无线网桥性能、交换机配置及供电电压等是影响图像…

Java大师成长计划之第10天:锁与原子操作

📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4o-mini模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 在多线程编程中,锁与原子…

线性代数——行列式⭐

目录 一、行列式的定义⭐ 1-1、三阶行列式练习 1-2、下面介绍下三角行列式、上三角行列式、对角行列式 ​编辑 二、行列式的性质 2-1、性质1,2,3,4,5,6 ​编辑 2-2、性质7 2- 3、拉普拉斯定理、克莱姆法则 三…

微软推出数款Phi 4“开放式”人工智能模型

微软周三推出了几款新的“开放式”人工智能模型,其中功能最强大的模型至少在一个基准测试上可与 OpenAI 的 o3-mini 相媲美。所有新的授权模型——Phi 4 mini reasoning、Phi 4 reasoning 和 Phi 4 reasoning plus——都是“推理”模型,这意味着它们能够…

VPN访问SAP组服务器报登陆负载均衡错误88:无法连接到消息服务器(RC=9)

用户反馈用SAPGUI接入SAP时报错:登陆负载均衡错误88:无法连接到消息服务器(RC9) 经了解是通过VPN访问,但VPN没有放行ICMP访问,导致不能PING通,不能确认是网络问题还是什么问题。 解决方案: 1、VPN由原&am…

使用AI-01开发板和开源后端服务搭建整套小智服务系统

使用AI-01开发板和开源后端服务搭建整套小智服务系统 四博智联的AI-01开发板,基于乐鑫ESP32-C2 专属定制的离线语音模组,能够完美的接入小智AI服务平台,再使用开源后端服务,就能够搭建一个完整的小智AI服务系统了。 下面是具体…

字节跳动在GitHub上有哪些开源项目

字节跳动(ByteDance)在GitHub上开源了许多项目,涵盖前端、后端、云原生、AI、数据库等多个领域。以下是一些典型项目及其简介: 1. 前端 & 跨平台开发 Hippy 仓库: Tencent/Hippy(注:Hippy 最初由腾讯开…

超长8分钟Suno V4.5 – 支持一首歌多风格转换啦~~~

f历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中,支持120并发任务 AI音乐支持中文,实测效果,大家自己听听看喽 2025年新年快乐,Viggle AI打开新年快乐 让照片舞动起来,只要3分钟就可以搞定了,…

vue3+ts项目 配置vue-router

安装vue-router pnpm install vue-router配置 1.src/router/index.ts文件下的内容 import type { App } from vue import type { RouteRecordRaw } from vue-router import { createRouter, createWebHistory } from vue-router import remainingRouter from ./modules/remai…

如何利用dify 生成Fine‑tune 需要的Alpaca 格式数据

如果你选择llamafactory 格式进行微调,它只是格式是Alpaca格式,dify 的agent dsl 如下,你可以导入本地的dify 或者导入cloud 版本的;测试版本是0.1.5 app:description: 上传文件,基于文件内容,使用 Silico…

C++开发指南

一、C++ 是什么? C++ 是一种强大、灵活、高性能的系统级编程语言,由 Bjarne Stroustrup 在 20 世纪 80 年代初开发,是 C 语言的超集。它既支持面向过程编程,也支持面向对象、泛型、函数式等现代范式。 C++ 被广泛应用于: 系统软件(如操作系统、编译器)游戏开发(如 Un…

重测序关系矩阵构建方式汇总

样本间亲缘关系矩阵(kinship matrix)和同源性矩阵(IBS matrix)构建的方式 1. 可以使用plink的–make-rel计算个体之间的亲缘关系(强调个体之间的遗传相似性) /opt/software/plink --bfile vcf_bfile--mak…

docker 部署前、后端分离项目详细步骤(从打包到部署)

在平常的开发工作中,一个项目经历需求、开发、测试、上线等步骤。在开发测试完成后,我们需要部署测试环境、生产环境等,那么我们用 docker 方式应该怎么部署呢?前后端分离的项目又该如何部署呢?那么,今天我…

大语言模型理解一般需求到在专业领域中最大限度地发挥其效能的演变轨迹

在人工智能技术飞速发展的当下,大语言模型(LLM)凭借其强大的语言处理能力和广泛的应用潜力,成为了各行业关注的焦点。从最初的文本生成、简单问答,到如今在专业领域的深度应用,大语言模型与用户的交互模式正…

mindyolo填坑

1、按照gitee上的文档跑预测代码,跑不通 更改: 将predict.py复制到跟目录。如果是cpu(本地测试比较常见),那么正确的命令行是: python predict.py --device_targetCPU --config ./configs/yolov7/yolov7.…

Python集合全解析:从基础到高阶应用实战

一、集合核心特性与创建方法 1.1 集合的本质特征 Python集合(Set)是一种​​无序且元素唯一​​的容器类型,基于哈希表实现,具有以下核心特性: ​​唯一性​​:自动过滤重复元素​​无序性​​&#xff…

【javascript】竞速游戏前端优化:高频操作与并发请求的解决方案

文章目录 前言一、性能痛点分析二、核心技术方案1.Web Worker2.Promise高级控制3.智能队列系统4.游戏化节流设计 三、最佳实践选择 前言 在竞速类网页游戏中,玩家高频点击与服务器实时交互会引发两大核心挑战: 客户端性能瓶颈:频繁操作导致…

Linux操作系统系统编程:x86-64架构下的系统调用

在Linux操作系统里,系统编程如同精密仪器的核心部件,掌控着系统运行的关键。而 x86-64 架构下的系统调用,更是连接用户空间程序与内核的关键桥梁。你可以把用户空间的程序想象成一个个 “工匠”,它们有着各式各样的需求&#xff0…

理解数据湖

目录 一、数据湖的定义与相关概念 二、数据湖出现的背景 三、数据湖关键技术 (一)存储技术

前端应用开发技术历程的简要概览

前端应用开发技术详解 一、萌芽期&#xff08;1990s - 2004&#xff09; 技术特征 HTML 3.2 / HTML 4.01 是主流版本。 样式用 CSS1/CSS2&#xff0c;但大部分样式写在 <style> 标签甚至行内。 动态效果主要通过 JavaScript 控制 DOM&#xff0c;兼容性极差。 代表事…