答案:使用Golang标准库实现Todo应用,通过定义Todo结构体和内存切片存储数据,利用net/http包注册路由处理增删改查请求,支持JSON格式通信,无需数据库,适合学习Web开发基础。

用Golang实现一个简单的Todo应用,可以借助标准库快速搭建HTTP服务,使用内存存储数据。整个过程不依赖数据库,适合学习Go语言的Web开发基础。
1. 定义Todo结构体和数据存储
每个Todo任务通常包含ID、标题和完成状态。使用结构体表示,并用切片在内存中保存数据。
type Todo struct { ID int `json:"id"` Title string `json:"title"` Done bool `json:"done"`}var todos []Todovar nextID = 1
初始化一个全局切片todos模拟数据库,nextID用于生成唯一ID。
2. 实现HTTP路由和处理函数
使用net/http包注册路由,处理增删改查请求。每个接口返回JSON格式数据。
立即学习“go语言免费学习笔记(深入)”;
获取所有Todo列表:
func getTodos(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(todos)}
添加新的Todo:
func createTodo(w http.ResponseWriter, r *http.Request) { var newTodo Todo if err := json.NewDecoder(r.Body).Decode(&newTodo); err != nil { http.Error(w, "Invalid JSON", http.StatusBadRequest) return } newTodo.ID = nextID nextID++ todos = append(todos, newTodo) w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) json.NewEncoder(w).Encode(newTodo)}
更新或删除指定ID的Todo:
func updateTodo(w http.ResponseWriter, r *http.Request) { idStr := strings.TrimPrefix(r.URL.Path, "/todos/") id, _ := strconv.Atoi(idStr) for i := range todos { if todos[i].ID == id { json.NewDecoder(r.Body).Decode(&todos[i]) json.NewEncoder(w).Encode(todos[i]) return } } http.Error(w, "Todo not found", http.StatusNotFound)}func deleteTodo(w http.ResponseWriter, r *http.Request) { idStr := strings.TrimPrefix(r.URL.Path, "/todos/") id, _ := strconv.Atoi(idStr) for i, todo := range todos { if todo.ID == id { todos = append(todos[:i], todos[i+1:]...) w.WriteHeader(http.StatusNoContent) return } } http.Error(w, "Todo not found", http.StatusNotFound)}
3. 启动HTTP服务器
在main函数中注册路由并启动服务器。
func main() { http.HandleFunc("GET /todos", getTodos) http.HandleFunc("POST /todos", createTodo) http.HandleFunc("PUT /todos/{id}", updateTodo) http.HandleFunc("DELETE /todos/{id}", deleteTodo) fmt.Println("Server starting on :8080...") http.ListenAndServe(":8080", nil)}
注意:Go 1.22+支持模式匹配路由,如”PUT /todos/{id}”可自动提取路径变量。
4. 测试API示例
使用curl测试功能是否正常:
查看所有任务:curl http://localhost:8080/todos添加任务:curl -X POST -H "Content-Type: application/json" -d '{"title":"Learn Go","done":false}' http://localhost:8080/todos更新任务:curl -X PUT -H "Content-Type: application/json" -d '{"title":"Learn Go","done":true}' http://localhost:8080/todos/1删除任务:curl -X DELETE http://localhost:8080/todos/1基本上就这些。这个简易Todo应用展示了Go语言处理HTTP请求、JSON编解码和基本路由的能力,为进一步集成数据库或前端打下基础。
以上就是如何使用Golang实现简单的Todo应用的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1413883.html
微信扫一扫
支付宝扫一扫