这篇笔记主要围绕前后端交互和Gin 核心概念帮你系统理解从浏览器发请求到 Gin 处理再返回响应的完整流程。1. JSON前后端的通用语言前端JavaScript和后端Go使用不同语言它们不能直接理解对方的数据结构。JSONJavaScript Object Notation就像一份通用的快递包裹前端可以打包发送后端拆包处理再打包返回。示例 JSON 数据{title:学Gin,status:false}类比流程前端打包 → 发送 JSON → 后端拆包处理 → 后端打包返回 → 前端拆包显示2. 前后端交互完整流程前端发送请求fetch(/todos,{method:POST,body:JSON.stringify({title:学Gin,status:false}),headers:{Content-Type:application/json}})Gin 接收请求varbody Todo c.ShouldBindJSON(body)// 把 JSON 装进 Go 的结构体处理业务逻辑保存数据库校验数据执行其他逻辑Gin 返回 JSON 响应c.JSON(200,gin.H{message:创建成功,todo:body})前端接收响应res.json().then(dataconsole.log(data))整体流程可以简化为前端 → JSON.stringify → 发请求 ↓ Gin → c.ShouldBindJSON → 装进结构体 → 处理 ↓ Gin → c.JSON → 返回 JSON ↓ 前端 → JSON.parse → 更新页面3. 结构体标签json:title双向翻译官在 Go 中结构体字段首字母大写才能被外部访问。JSON 字段通常是小写。标签json:...就像翻译官typeTodostruct{Titlestringjson:title}方向过程输入前端→后端JSONtitle→ 装入 Go 的Title输出后端→前端Go 的Title→ 转成 JSONtitle例子前端传title:学Gin经过绑定后body.Title 学Gin再返回给前端时自动转成title:学Gin。4. Body请求的“身体”Body 是 HTTP 请求的内容载体不在 URL 中用于传输 JSON 或其他数据格式示例终端 curl:curl-d{title:学Gin}http://localhost:8080/todos前端 fetch:fetch(/todos,{method:POST,body:JSON.stringify({title:学Gin})})后端 Gin:varbodystruct{Titlestringjson:title}c.ShouldBindJSON(body)此时body.Title 学Gin。5. curl命令行版前端curl 是命令行工具用于模拟前端发请求便于测试接口对应关系操作前端curl发 GETfetch(url)curl url发 POSTfetch({method:POST, body:...})curl -X POST -d ...收 JSONres.json()终端直接打印6. Gin 获取请求数据的四种方式方法数据来源URL 示例c.Param(id)URL 路径参数:id/users/5c.Query(name)URL 查询参数?name/search?namezhangsanc.ShouldBindJSON(body)请求体 Body不在 URLc.GetHeader(Authorization)请求头 Header不在 URL7.c.BindJSON赋值过程详解varbodystruct{Titlestringjson:title}c.BindJSON(body)执行过程Gin 读取请求 Body 中的 JSON{title:学Gin}根据结构体标签json:title匹配字段将值学Gin存入body.Title最终body.Title学Gin这个过程就是“拆包 填字段”的流程。8. 函数签名标准格式Go 的函数签名标准格式func函数名(参数名 参数类型)返回值类型{// 函数体}示例funcRegister(c*gin.Context){...}// 无返回值funcInit(filestring)error{...}// 返回 errorfuncAdd(aint,bint)int{returnab}// 有参数有返回值参数在括号里返回值类型在括号外Gin 中的路由处理函数通常以c *gin.Context作为参数用于接收请求、返回响应总结JSON 是前后端通用语言请求和响应都是 JSONc *gin.Context是 Gin 的核心管家负责绑定请求、返回响应结构体标签json:...实现字段大小写翻译Body用来传递请求数据不在 URL函数签名规范参数在括号返回值在括号外Gin 路由函数固定传入c *gin.Context理解这些概念你就能顺畅完成前后端交互并在 Gin 框架下处理各种请求。