小编Xep*_*eph的帖子

Gin 路由器:路径段与现有通配符冲突

我想让我的应用程序服务于以下事物。

  • a.com => 将 /www 提供给浏览器,以便浏览器可以查找 /www/index.html)
  • a.com/js/mylib.js => 将 /www/js/mylib.js 提供给浏览器
  • a.com/api/v1/disk => 返回 JSON 的典型 REST API
  • a.com/api/v1/memory => 另一个 API

我做了如下代码:

package main

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

func main() {
    r := gin.Default()

    r.Static("/", "/www")

    apiv1 := r.Group("api/v1")
    {
        apiv1.GET("/disk", diskSpaceHandler)
        apiv1.GET("/memory", memoryHandler)
        apiv1.GET("/cpu", cpuHandler)
    }

    r.Run(":80")
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,它恐慌:

panic: path segment '/api/v1/disk' conflicts with existing wildcard '/*filepath' in path '/api/v1/disk'
Run Code Online (Sandbox Code Playgroud)

我明白为什么它会恐慌,但我不知道如何解决。

我脑子里只有两件事:

  1. 使用 NoRoute() 函数,它将处理 /api/v1 组路径以外的其他内容(不知道我是如何实现的)
  2. 使用中间件。有静态中间件https://github.com/gin-gonic/contrib但代码在 Windows 上不起作用(https://github.com/gin-gonic/contrib/issues/91

先感谢您。

go go-gin

5
推荐指数
2
解决办法
3784
查看次数

标签 统计

go ×1

go-gin ×1