Linux応用コース5/11
ウェブ情報の扱い方 <POST>
HTTP通信におけるPOSTリクエストについて解説します。
GETメソッドとPOSTメソッドの違いについても理解しましょう。
POSTメソッドとは?
POST メソッドは、HTTP通信でWebブラウザなど(クライアント) からWebサーバへリクエストを送る際に利用されるリクエストの種類の一つです。
GET メソッドはリクエストしてwebサーバーから何かもらってくるのに対し、 POST メソッドはリクエストしてwebサーバーにデータを渡してくれます。
curlコマンドとは?
curl コマンドはHTTPレスポンスの中身を見たいときに利用するコマンドです。
curl コマンドと指定したURLをコマンド入力することで中身を表示できます。
また、HTTPレスポンスはHeaderとBodyに分かれておりどちらかのみを指定して表示することもできます。
POST メソッドの場合は、HTTPリクエストしてデータをwebサーバーに渡し、渡したHTTPレスポンスのデータを確認することができます。
GETとの違いは何?
GETリクエストは、以下のようにデータを送る際にURLにパラメーターを付けます。しかし、パスワードのような機密情報を送ってしまうと、URLにパスワードが載ることになり、秘密情報が露出してしまいます。
そこで、POSTでは、URLに載せない形でデータを送信することができるのです。POSTリクエストは、ログインフォームのようなフォームのデータを送信する際によく利用します。
curl https://envader.plus/?name=tanaka&animal=nekohttps://envader.plus/?id=hoge&password=fuga #これだと困る!基本的な使い方
#Bodyのみ表示
curl 指定のURL指定したURLのHTTPレスポンスのうちBodyのみを表示することができます。
#ヘッダーのみ表示
curl -I 指定のURL指定したURLのHTTPレスポンスのうちヘッダーのみを表示することができます。
curl -i 指定のURL指定したURLのHTTPレスポンスを表示することができます。
curlコマンドについては次の記事で解説しています。
https://envader.plus/course/5/scenario/1026
よく使うオプション
| オプション | 説明 | 
|---|---|
| -d | POSTリクエストとしてフォームを送信する | 
| -I | ヘッダ情報のみ表示する | 
| -i | ボディ情報のみを表示する | 
| -O | 取得したデータを標準出力ではなくファイルに出力する | 
| -R | ダウンロードしたファイルのタイムスタンプをサーバー上のタイムスタンプに合わせる。 | 
| -L | 要求したページにリダイレクトが設定されていた場合に追従する。 | 
curlを使ってPOSTメソッドで通信
では curl コマンドで POSTメソッドを使って通信してみましょう。
-XPOST オプションで POSTリクエスト になります。
curl -XPOST 指定したURLデータ(パラメータ)も一緒ににリクエストをする時は、-d オプションを利用し、その後に  '' (クォーテーション)でデータの中身を記述できます。
curl -XPOST -d 'name=user' 指定したURLPOSTする内容が複数ある場合は、それらの間に &(アンパサンド)を加えます。
curl -XPOST -d 'name=user&job=engineer' 指定したURL上記のようにすることで指定したURLにPOSTリクエストを送りその結果をコマンドライン上に表示することができます。
応用的な使い方
URLから受け取ったレスポンスをそのままファイルに出力したい場合は -o オプションを使います
curl -XPOST 指定のHTTP -O file.txt上記のようにすることで、自分が今いるディレクトリにファイルを自動で作成し、その中に返ってきたHTTPレスポンスのデータを出力してくれます。
まとめ
POSTリクエストについて解説しました。
まとめると
- web上からデータを確認するには、 curl コマンド
- webサーバーにURLパラメーターに記述せずにデータを渡す時は、 POST メソッド
curl は、システム開発やアプリケーションのテストなど様々な場面で使われるのでぜひ身に着けておきましょう。
問題を解くためには、十分な画面サイズのPC環境をご利用下さい。
