返回顶部
首页 > 资讯 > 后端开发 > GO >golang gin 为不同的查询提供一条路线
  • 900
分享到

golang gin 为不同的查询提供一条路线

2024-02-14 11:02:31 900人浏览 薄情痞子
摘要

PHP小编新一将为您介绍一种强大的WEB框架,即golang Gin。Gin是一个基于Golang的轻量级Web框架,它为不同的查询提供了一条简洁高效的路线。无论是GET请求还是POS

PHP小编新一将为您介绍一种强大的WEB框架,即golang Gin。Gin是一个基于Golang的轻量级Web框架,它为不同的查询提供了一条简洁高效的路线。无论是GET请求还是POST请求,Gin都可以轻松处理,让您的开发过程更加简单快捷。无论是处理JSON数据还是html模板,Gin都提供了丰富的功能和灵活的扩展性。无论您是初学者还是有经验的开发人员,Gin都是您的不二选择。

问题内容

gin 中是否可以有一个包含 :item (name) 或 :id 的路由?

示例:

r.get("/inventories/(:item|:id)", controllers.findinventory)

然后我可能会做一些类似的事情......

func FindInventory(g *gin.Context) {
    var inv models.Inventory

    if item:
       err := models.DB.Where("item = ?", g.Param("item")).First(&inv).Error
    else:
       err := models.DB.Where("id = ?", g.Param("id")).First(&inv).Error
       
    if err != nil {
        g.jsON(Http.StatusBadRequest, gin.H{"error": "Record not found!"})
        return
    }

    g.JSON(http.StatusOK, gin.H{"data": inv})
}

或者有没有办法使用一个路由来执行两种类型的查询?

解决方法

不,不支持此操作。但必须有某种方法来区分 item 和 id。所以自己实现逻辑很容易。

像这样:

r.get("/inventories/:item", controllers.findinventory)
func FindInventory(g *gin.Context) {
    var inv models.Inventory

    item := g.Param("item")
    id, err := strconv.Atoi(item)
    if err != nil {
        err := models.DB.Where("item = ?", item).First(&inv).Error
    } else {
        err := models.DB.Where("id = ?", id).First(&inv).Error
    }
    if err != nil {
        g.JSON(http.StatusBadRequest, gin.H{"error": "Record not found!"})
        return
    }

    g.JSON(http.StatusOK, gin.H{"data": inv})
}

但是如果无法区分,那么您需要有两个单独的请求路径,例如

  • /inventories/by-item/:item
  • /inventories/by-id/:id

2023-05-31更新:将@epicadidash和@boyvinall的评论合并到答案中。谢谢!

以上就是golang gin 为不同的查询提供一条路线的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: golang gin 为不同的查询提供一条路线

本文链接: https://www.lsjlt.com/news/564398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作