やる気がストロングZERO

やる気のストロングスタイル

Go echoでformのpost処理後のリダイレクトがうまく行かずにハマった

Go echoでformのpost処理後のリダイレクトがうまく行かずにハマったのでメモ

やりたかったこと

formデータをPOSTで受け取って処理したあと、一覧ページにリダイレクトしたかった。

func (w *WebApp) 登録処理(c echo.Context) error {
    // postパラメータを受け取って登録処理
        ...
    // TOP画面へリダイレクトさせる
    return c.Redirect(http.StatusCreated, "/")
}

起こったこと

リダイレクト先でstatus500でエラーになってしまった。
調べると、リダイレクト先にPOSTでリクエストしていて、そんなRootingは用意していないので(Getしか用意していないので)エラーになってた。

間違っていたこと

返却statuscodeをhttp.StatusFound(302)にすべきだった。

return c.Redirect(http.StatusFound, "/")

そういえばそうでした。
登録完了してデータが作成されたので感覚でなんとなくStatusCreatedにしてしまってた。