万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

ginのformでDELETEやPUTのメソッドを送る方法

ginのフレームワークでできるか?

HTMLのformmethodPUTとか書いてもおそらくブラウザが対応してない?せいか GET扱いになる。 おそらく、知らないmethodを書くとGETになる仕様なのかも?

portaltan.hatenablog.com

これをみるとhiddenに書けばいけるっぽい。 Sinatraが対応してくれてる?

ここ見る限りモダンなRailsなども対応 html - Why don't the modern browsers support PUT and DELETE form methods? - Stack Overflow

しかしginは・・・。できなかった・・。

探すとginのgithubのフォーラム上で

PUT does not work. Always 404 · Issue #450 · gin-gonic/gin · GitHub

ん?<form action="/1" method="post"> これは? しかし、これは単にidのことですね。関係ない。

go get github.com/martini-contrib/method

インポートする。

import(
        "ghoulme/controllers"
        "github.com/gin-gonic/gin"
        "net/http"
        "os"
        "github.com/martini-contrib/method"
)

これ追加。

var overrideHandler = method.Override()
func Override(c *gin.Context) {
        overrideHandler.ServeHTTP(c.Writer, c.Request)
}
        router := gin.Default()
        router.Use(Override) // これ追加。
        router.LoadHTMLGlob("templates/**/*")
        controllers.Setup(router

これで一応putできるようになった。

が・・・・つねに404となる。 誰か教えて。 またはわかったらまた記事書きます。