リクエストパラメーターとその型について


最近のAPIの開発に着手し始めて、クライアントから送られてくるリクエストパラメーターの型について意識し始めた。クエリストリングやボディーのフォーマットに応じてどのような型がくるのか整理したく記録に残す。

クエリストリングで送られてくる場合

localhost:3000/shops?pageno=1&pagesize=60

キーに値が指定していればその値の型は文字列となる。

*ちなみにkey=valueの記述がない場合はnullとなり、key=のみ記述した場合はその値は空文字列となる。
*(Railsの場合)paramsで文字列として値がセットされるので、API側で文字列以外の値を使いたいときはその型へキャストする必要がある。

ボディーで送られてくる場合

ボディーのフォーマットがContent-Type: application/x-www-form-urlencodedの場合

WEBブラウザのフォームのリクエストでよく使われる。
キーに指定した値はRFC1866が定める変換フォーマットにしたがって文字列に変換される。

*(Railsの場合)paramsで文字列として値がセットされるので、API側で文字列以外の値を使いたいときはその型へキャストする必要がある。

ボディーのフォーマットがContent-Type: application/jsonの場合

アプリのリクエストやAjaxのリクエストでよく使われる。
jsonは型を持つことができるので、クライアント指定した型を持った状態でリクエストを投げることができる。

Chromeを使った確認方法

「右クリック>検証>Networkタブ」でリクエストとレスポンスの情報を確認することができる。

以下は、Content-Type: application/x-www-form-urlencodedでリクエストを投げた時の例。