四大请求方式

Restful风格值得是网络应用中就是资源定位和资源操作的风格。不是标准也不是协议

GET:从服务器取出资源(一项或多项)

POST:在服务器新建一个资源

PUT:在服务器更新资源(客户端提供完整资源数据)

PATCH:在服务器更新资源(客户端提供需要修改的资源数据)

DELETE:从服务器删除资源

go 复制代码
package main

import (
    "encoding/json"
    "fmt"

    "github.com/gin-gonic/gin"
)

type ArticleModel struct {
    Title   string `json:"title"`
    Content string `json:"content"`
}
type Response struct {
    Code int    `json:"code"`
    Data any    `json:"data"`
    Msg  string `json:"msg"`
}

func _bindJson(c *gin.Context, obj any) (err error) {
    data, _ := c.GetRawData()
    contentType := c.GetHeader("Content-Type")
    switch contentType {
    case "application/json":
       //fmt.Println(string(data))
       err := json.Unmarshal(data, obj)
       if err != nil {
          fmt.Println(err.Error)
          return err
       }
    }
    return nil
}

// 文章列表
func _getList(c *gin.Context) {
    articleList := []ArticleModel{
       {"Go语言入门", "这篇文章是《Go语言入门》"},
       {"python语言入门", "这篇文章是《python语言入门》"},
       {"JavaScript语言入门", "这篇文章是《JavaScript语言入门》"},
    }

    c.JSON(200, Response{0, articleList, "成功"})
}

// 文章详情
func _getDetail(c *gin.Context) {
    article := ArticleModel{
       "Go语言入门", "这篇文章是《Go语言入门》",
    }
    //获取param中的id
    fmt.Println(c.Param("id"))
    c.JSON(200, Response{0, article, "成功"})

}

// 添加文章
func _create(c *gin.Context) {
    //接受前端传递过来的json数据
    var article ArticleModel
    err := _bindJson(c, &article)
    if err != nil {
       fmt.Println(err)
       return
    }
    c.JSON(200, Response{
       Code: 0,
       Data: article,
       Msg:  "添加成功",
    })
    fmt.Println(111)
}

// 编辑文章
func _update(c *gin.Context) {
    fmt.Println(c.Param("id"))
    var article ArticleModel
    err := _bindJson(c, &article)
    if err != nil {
       fmt.Println(err)
       return
    }
    c.JSON(200, Response{0, article, "修改成功"})

}

// 删除文章
func _delete(c *gin.Context) {
    fmt.Println(c.Param("id"))
    c.JSON(200, Response{0, map[string]string{}, "删除成功"})
}

func main() {
    router := gin.Default()
    router.GET("/articles", _getList)       //文章列表
    router.GET("/articles/:id", _getDetail) //文章详情
    router.POST("/articles/", _create)      //添加文章
    router.PUT("/articles/:id", _update)    //编辑文章
    router.DELETE("/articles/:id", _delete) //删除文章

    router.Run(":8080")
}
相关推荐
呆萌很4 小时前
【Gin】文件上传下载(单文件 + 多文件)
gin
先跑起来再说2 天前
Go 排行榜系统的工程化实现:分布式锁、快照表与定时刷新
分布式·go·gin
必胜刻4 天前
一个异步生成游戏功能的落地复盘:Redis Stream + WebSocket + 状态补偿
redis·websocket·golang·gin·状态补偿
TE-茶叶蛋5 天前
B-tree vs GIN Trigram vs HNSW
gin
曾几何时`7 天前
Go(一)Gin框架 和 GORM机制
开发语言·golang·gin
老毛肚8 天前
Gin + GORM 接口可视化测试
gin
lolo大魔王8 天前
Gin 框架中间件超详细实战教程(原理、全局中间件、路由中间件、自定义中间件、跨域、日志拦截)
中间件·gin
lolo大魔王8 天前
Gin 框架响应格式与 HTML 模板渲染完整实战教程
前端·html·gin
必胜刻17 天前
Go 调用Coze工作流实现 AI 游戏生成
开发语言·ai·golang·gin
比特森林探险记19 天前
context 在 gRPC / Gin / K8s 中的实战
容器·kubernetes·gin