7

以下のものを提供するアプリを作りたいです。

  • 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 つのことだけです。

  1. /api/v1 グループ パス以外を処理する NoRoute() 関数を使用します (正確にどのように実装するかはわかりません)。
  2. ミドルウェアを使用します。https://github.com/gin-gonic/contribに静的な中間がありますが、コードは Windows で動作しません ( https://github.com/gin-gonic/contrib/issues/91 )

前もって感謝します。

4

2 に答える 2