新闻中心
Golang如何搭建简单的REST API服务
答案:使用Golang标准库net/http可快速搭建REST API,定义User结构体和全局切片模拟数据,实现GET请求获取用户列表和单个用户,通过json.NewEncoder设置Content-Type为application/json并返回JSON数据;利用Gorilla Mux增强路由功能,支持路径参数提取和HTTP方法限制,添加POST处理函数createUser解析请求体中的JSON数据,生成新ID并追加到用户列表,返回状态码201及创建的用户信息,完整实现基础RESTful接口。

用Golang搭建一个简单的REST API服务并不复杂,Go语言标准库已经提供了足够的工具来快速实现。下面是一个清晰、实用的实现方式,适合初学者上手。
使用标准库 net/http 创建基础服务
Go 的 net/http 包可以轻松启动HTTP服务并处理路由和请求。以下是一个最简REST服务示例:
package main
import (
"encoding/json"
"log"
"net/http"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
}
var users = []User{
{ID: 1, Name: "Alice"},
{ID: 2, Name: "Bob"},
}
func getUsers(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(users)
}
func getUser(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)
}
func main() {
http.HandleFunc("/users", getUsers)
http.HandleFunc("/users/", getUser)
log.Println("Server starting on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
说明:
- 定义了一个 User 结构体,并初始化一个全局切片作为“数据存储”
- /users 返回所有用户列表
- /users/{id} 根据路径提取ID返回单个用户
- 设置响应头为 JSON 格式,使用 json.NewEncoder 编码输出
使用 Gorilla Mux 增强路由功能
标准库的路由能力有限,Gorilla Mux 是一个流行的第三方路由器,支持命名参数、方法限制等。
安装:
go get github.com/gorilla/mux
改写路由部分:
Zyro AI Background Remover
Zyro推出的AI图片背景移除工具
145
查看详情
import "github.com/gorilla/mux"
func main() {
r := mux.NewRouter()
r.HandleFunc("/users", getUsers).Methods("GET")
r.HandleFunc("/users/{id}", g
etUser).Methods("GET")
log.Println("Server starting on :8080")
log.Fatal(http.ListenAndServe(":8080", r))
}
在 getUser 中获取参数:
vars := mux.Vars(r) id := vars["id"]
这种方式更清晰、安全,也更容易扩展POST、PUT、DELETE等操作。
添加 POST 请求处理示例
实现创建用户功能:
func createUser(w http.ResponseWriter, r *http.Request) {
var user User
json.NewDecoder(r.Body).Decode(&user)
user.ID = len(users) + 1
users = append(users, user)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
json.NewEncoder(w).Encode(user)
}
注册路由:
r.HandleFunc("/users", createUser).Methods("POST")
这样就可以接收JSON格式的用户数据并添加到列表中。
基本上就这些。用Go写REST API可以从标准库开始,逐步引入Mux等工具提升可维护性。不复杂但容易忽略细节,比如设置Header、正确返回状态码。以上就是Golang如何搭建简单的REST API服务的详细内容,更多请关注其它相关文章!
# 营销人员推广伪冒行为
# 路由功能
# 如何在
# 相关文章
# 中文网
# 解决问题
# 第三方
# 重庆seo外包服务推广
# 如何建立网站站点优化
# 资源管理
# 鲍鱼tv下载SEO查询
# 北京网站推广威心hfqjwl下拉
# 聊城济南网站建设优化
# 网站推广的盈利
# app营销推广怎么写
# seo公司那家好
# 茶叶市场推广营销方案
# 路由器
# git
# json
# go
# github
# golang
# go语言
# 编码
# app
# js
# 工具
# ai
# 路由
# rest a
# 是一个
# 加载
# 用户列表
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Node.js 中使用 node-cron 实现定时 API 数据抓取与处理
Mac怎么查看崩溃日志_Mac控制台错误报告分析
PySpark中高效提取字符串右侧可变长度数字:使用regexp_extract
邮政快递单号查询入口 邮政快递物流信息在线查询入口
Archive of Our Own官网直达 AO3最新可用地址一览
Python中高效访问嵌套字典与列表中的键值对
Django通过AJAX异步上传图片并保存至模型的完整指南
必由学官方网站入口 必由学学生教师共用登录通道
Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025
天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】
Go Martini框架:动态服务解码后的图片内容
KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明
Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法
Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全
Golang如何优雅处理error_Golang error处理最佳实践总结
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
拼多多赚钱渠道_拼多多收益来源
动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道
解决J*aScript中重复选择项的确认对话框显示问题
俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航
深入理解J*aScript中的B样条曲线与节点向量生成
Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
在React函数组件中利用原生HTML5进行邮箱地址验证
Go语言中对Map值调用带指针接收者方法:原理与最佳实践
composer的"require-dev"部分是用来做什么的?
微博网页版直接访问 微博网页版账号管理快速入口
天眼查企业查询官网入口 天眼查官方网页版查询
Angular响应式表单:实现提交后表单及按钮的禁用与只读化
支付宝如何管理隐私设置_支付宝隐私保护的配置技巧
React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性
steam官方入口大全 steam账号注册及操作指南
使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性
BetterDiscord插件中安全更新用户简介的实践指南
抖音未来赚钱的新趋势 2025年值得关注的变现风口分析
PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧
sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南
知音漫客正版漫画平台_知音漫客官网账号登录
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
微信网页版官方快速登录入口 微信网页版网页版账号直达
黑猫投诉统一入口官网 消费者权益保护投诉平台
必由学官方平台入口 必由学在线课堂登录地址
蛙漫移动版在线看 蛙漫手机浏览器直达入口
将HTML Canvas内容转换为可上传的图像文件(File对象)
高德地图公交到站提醒失败如何解决 高德提醒权限设置
AO3同人作品网入口 AO3搜索引擎官网永久地址
小米Civi 4录制视频过暗_小米Civi 4亮度优化
css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染


2025-11-17
浏览次数:次
返回列表
etUser).Methods("GET")
log.Println("Server starting on :8080")
log.Fatal(http.ListenAndServe(":8080", r))
}