以下のものを提供するアプリを作りたいです。
- a.com => ブラウザーが /www/index.html を検索できるように、/www をブラウザーに提供します)
- 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")
}
コードを実行すると、パニックが発生します。
panic: path segment '/api/v1/disk' conflicts with existing wildcard '/*filepath' in path '/api/v1/disk'
パニックになる理由はわかりますが、修正方法がわかりません。
私の頭に浮かんだのは、次の 2 つのことだけです。
- /api/v1 グループ パス以外を処理する NoRoute() 関数を使用します (正確にどのように実装するかはわかりません)。
- ミドルウェアを使用します。https://github.com/gin-gonic/contribに静的な中間がありますが、コードは Windows で動作しません ( https://github.com/gin-gonic/contrib/issues/91 )
前もって感謝します。