最省事方式是用net/http直接写轻量API:新建Go Modules项目,main.go中用http.HandleFunc定义路由(如"/api/nodes"),内存map存Node结构体并JSON落地data.json,配合air热重载实现保存即生效。

GoLand里怎么快速启动一个支持JSON API的Go后端
直接用 net/http 搭个轻量API服务最省事,不用引入框架也能撑住思维导图这类读多写少、结构简单的数据场景。GoLand本身对Go模块和调试支持很好,重点是别一上来就搞gin/echo——小项目反而增加配置负担和路由理解成本。
- 新建项目时选“Go Modules”而非“Empty Project”,确保
go.mod自动生成 - 入口文件保持默认
main.go,http.ListenAndServe(":8080", nil)足够起步 - 把路由逻辑全写在
http.HandleFunc里,比如"/api/nodes"处理节点增删改查,先跑通再拆分 - GoLand右上角“Run”按钮旁点下拉箭头 → “Edit Configurations” → 确保 “Working directory” 是项目根目录,否则
go run .可能找不到go.mod
思维导图数据该用什么结构存?别直接上数据库
初期用内存 map + JSON 文件落地最稳妥。思维导图节点关系简单(父子结构、ID引用),硬上MySQL或SQLite会卡在建表、migration、连接池这些和业务无关的环节上。
- 定义核心结构体:
type Node struct { ID string `json:"id"` ParentID string `json:"parentId"` Text string `json:"text"` Children []string `json:"children"` } - 用
map[string]*Node当内存缓存,所有操作先查这个 map;每次变更后调用json.MarshalIndent写入data.json - 注意:GoLand默认不监视文件变化,修改
data.json后要手动触发重载——加个os.Stat检查文件修改时间,或干脆每次API请求都重新读一次(小文件无压力) - 避免用
encoding/gob,它不跨语言,前端JS没法直接解析;坚持用标准json包
POST /api/nodes 400 Bad Request?检查Content-Type和body读取方式
前端发过来的JSON数据,Go后端必须显式设置 Content-Type: application/json 才能被正确识别。GoLand调试时看到400,八成是没读到body或解码失败。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 在 handler 开头加
if r.Header.Get("Content-Type") != "application/json" { http.Error(w, "Content-Type must be application/json", http.StatusBadRequest); return } - 用
io.ReadAll(r.Body)读原始字节,别用r.FormValue(那是给表单用的) - 解码前先校验非空:
if len(body) == 0 { http.Error(w, "empty body", http.StatusBadRequest); return } - GoLand调试时,在
json.Unmarshal行设断点,鼠标悬停看body变量值——如果显示[]uint8 len:0,说明前端根本没发数据或header错了
本地开发时如何让GoLand自动重启后端?
GoLand原生不带热重载,但可以用 air 工具集成进运行配置,保存代码后秒级生效,比手动Ctrl+C+Run快得多。
- 终端执行
go install github.com/cosmtrek/air@latest安装 - 在项目根目录建
.air.toml,内容只需两行:root = "."和bin = "./air-build" - GoLand中 “Run” → “Edit Configurations” → 新建 “Go Tool” 类型 → Program path 填
air,Arguments 留空,Working directory 设为项目根目录 - 注意:第一次运行会生成
air-build二进制,之后修改main.go保存,air 自动重建并重启,控制台输出 “listening on :8080” 即成功
内存存储+JSON落地+air热重载这套组合,跑通思维导图增删节点、拖拽更新父子关系完全够用。等真需要协同编辑或历史版本时,再考虑加Redis或换数据库——现在先把接口跑起来,比什么都重要。

















