はじめに
RailsでAPIを叩いたときにパラメータの挙動がおかしかったのでまとめます
問題
以下のエンドポイントを作成しました
ここではリミットとキーワードをパラメータから受け取ります
def index
limit = params.fetch(:limit, 50)
keyword = param.fetch(:keyword)
# 中身を表示する
p params
return render json: { message: "hello" }, status: :ok
end
しかしCurlを叩くとparams
にはkeyword
しかありませんでした。
$ curl localhost:3000?keyword=hoge&limit=1
{"keyword"=>"test", "controller"=>"/", "action"=>"index"}
curlのクエリの順序を変えたところ最初のクエリのみを受け取っていました
$ curl localhost:3000?limit=1&keyword=hoge
{"limit"=>1, "controller"=>"/", "action"=>"index"}
解決方法
curlを以下にしたら治りました
$ curl "localhost:3000?keyword=hoge&limit=1"
おわりに
あまりcurlでクエリつけたものを叩いたことなかったので時間がかかりました
ネットに同じ症状の人がいなかった