首先定义留言结构体并实现HTTP路由处理,使用net/http包搭建服务,内存存储消息并支持GET/POST请求,前端通过JavaScript调用API实现展示与提交功能。

实现一个基础的留言板功能,使用 Golang 可以快速搭建出轻量、高效的后端服务。整个流程包括定义数据结构、处理 HTTP 请求、存储留言数据以及前端交互。下面通过一个简单但完整的示例来展示如何用 Golang 实现留言板。
定义留言数据结构
每条留言通常包含 ID、用户名、内容和时间戳。可以使用 Go 的 struct 来表示:
type Message struct { ID int `json:"id"` User string `json:"user"` Content string `json:"content"` Time time.Time `json:"time"`}
这个结构体可用于 JSON 编解码,方便前后端传输数据。ID 用于标识每条留言,Time 记录提交时间。
搭建 HTTP 服务与路由
使用 Go 内置的 net/http 包启动 Web 服务,并设置几个关键接口:
立即学习“go语言免费学习笔记(深入)”;
GET /messages:获取所有留言 POST /message:提交新留言
代码示例如下:
func main() { messages := []Message{} nextID := 1 http.HandleFunc("/messages", func(w http.ResponseWriter, r *http.Request) { if r.Method == "GET" { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(messages) } }) http.HandleFunc("/message", func(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { var msg Message if err := json.NewDecoder(r.Body).Decode(&msg); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } msg.ID = nextID nextID++ msg.Time = time.Now() messages = append(messages, msg) w.WriteHeader(http.StatusCreated) json.NewEncoder(w).Encode(msg) } }) fmt.Println("Server is running on :8080") http.ListenAndServe(":8080", nil)}
这里将留言保存在内存切片中,适合演示或轻量场景。生产环境建议替换为数据库存储。
前端页面交互(可选)
可以添加一个简单的 HTML 页面,通过 JavaScript 调用后端 API 实现留言展示和提交:
// 提交留言document.getElementById("messageForm").addEventListener("submit", async (e) => { e.preventDefault(); const user = document.getElementById("user").value; const content = document.getElementById("content").value; await fetch("/message", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ user, content }) }); loadMessages(); // 刷新列表 document.getElementById("messageForm").reset();});// 加载留言async function loadMessages() { const res = await fetch("/messages"); const msgs = await res.json(); const container = document.getElementById("messages"); container.innerHTML = msgs.map(m => ${m.user} (${new Date(m.time).toLocaleString()}):${m.content} ).join("");}// 初始化加载loadMessages();
将此 HTML 返回给根路径请求,即可形成完整交互。
扩展建议
当前实现基于内存存储,重启即丢失数据。如需持久化,可接入 SQLite、MySQL 或 MongoDB。例如使用 database/sql 配合 SQLite 驱动:
建表语句:CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, user TEXT, content TEXT, time DATETIME) 查询时使用 db.Query 获取所有留言 插入时使用 db.Exec 并记录时间
同时可增加字段校验、防 XSS 过滤、分页支持等功能提升安全性与体验。
基本上就这些。用 Golang 实现留言板不复杂但容易忽略细节,比如时间格式、JSON 编码、CORS 支持等。只要理清数据流向,就能快速搭建可用原型。
以上就是如何用Golang实现留言板功能_Golang 留言板功能实践的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1427869.html
微信扫一扫
支付宝扫一扫