質問: goのライブラリーechoでは下記の様な方法でリクエストパラメータを取得する様ですが、パラメーターが複数あるとめんどくさそうです。構造体とかで取得する方法はないのでしょうか? ``` curl \ -X GET \ http://localhost:1323\?name\=Joe ``` ``` // Handler func(c echo.Context) error { name := c.QueryParam("name") return c.String(http.StatusOK, name) }) ```
回答: パラメータを`?obj={"hoge":"moge"}`のURLエンコードにしてしまって objから得られた文字列をjsonデコードするというトリッキーな方法は 思いつきましたがあまり推奨できません。 そもそも、パラメータを検証せずに扱うのはとても脆弱な実装を生んでしまいやすいので、 ひとつひとつ丁寧に検証すべきだと思います。 だとすればお好きな構造体を定義してそれぞれ検証して各フィールドに 格納するというのが良いと思います。 追記: QueryParams()を呼べば、url.Valuesを取得することはできます(`map[string][]string`相当)