【Go】クエリストリングを複数投げたのに取得できない時
経緯
GoでAPI書いていて http://localhost:2000/hogehoge?name=yeee&age=fugaa
みたいなリクエスト投げたのにちゃんと取得出来なくて3日くらい悩んだのに、すごい初歩的な事が原因だった。
原因
そもそもGo側の問題じゃなかった。 ターミナルからcURL叩いてたのが原因・・・というか、エスケープをちゃんとしてなかったのが原因だった。
# ダメな例 $ curl http://localhost:2000/hogehoge?name=yeee&age=fugaaa # ちゃんと通る例(&をエスケープしてる) $ curl http://localhost:2000/hogehoge?name=yeee\&age=fugaaa
備考
&ってシェル上だと この処理バックグラウンドでやってね〜ヨロシク〜
って意味になるらしいので、エスケープして「この&は無害な&です」と明示する必要があった。
ちょっとしたことだけど参照先の記事がなければ永遠にGo側の問題だと思って沼にハマっていたので(もはやハマっていたけど)感謝。
ちなみにURL部分を シングルクォート
で囲んでもいけた。
$ curl `http://hogehoge:2000/fuga?name=yeee&age=fugaaa`