httpでGETとかPOSTとかあるけど、どう意味なんだろう…
分かりやすく教えてほしいな。
上記のお悩みを解決します。
■本記事の内容
本記事で以下の内容をお伝えします。
・httpのGETとPOSTの使い方
■本記事の信頼性
この記事を書いている私は、プログラミングを仕事として始めて10年以上ほど経ちます。今も現役のシステムエンジニアです。
初心者向けにhttpのGETとPOSTについて分かりやすく説明していきます。
WEB APIを使用する場合は必要になる知識になるので、WEBアプリ系の開発を目標にされている方は早いうちに理解しておくとよいでしょう。
httpとは
http(Hypertext Transfer Protocol)は、ブラウザ(IE、Chrome、Safariなど)がWEBサーバへ接続する時に使用する通信プロトコルになります。
いわば、通信するための約束事のことを指します。
このGETとPOSTについてもhttpの約束事の1つになります。
詳しくは以下の記事でhttpについてまとめておりますので、良ければ参考にしていただければ幸いです。
httpのGETとPOSTの違い
httpの基本の流れはリクエスト(要求)とレスポンス(応答)です。
サーバに対して、httpで要求することでサーバからそのリクエストに応じた応答を行ってくれます。
例えば、ブラウザからURLを入力して実行するとWEBサイトが表示されると思いますが、これはブラウザがhttpを利用してサーバに対してWEBページくださいと要求しているイメージです。
これを受けたサーバはWEBページを返す。そしてそれを受け取ったブラウザが表示するといった流れになります。
このリクエストを行う際にGET、POSTといったhttpメソッドを指定するのがhttpのルールになります。
GET
POST
PUT
DELETE
CONNECT
HEAD
OPTIONS
PATCH
TRACE
上記でよく利用するのがGET、POSTが多いです。
もし、サーバがREST APIを採用している場合はPUTとDELETEもよく使用します。
REST APIについては以下の記事でまとめておりますので、良かったら参考にしてみてください。
GETとPOSTの違いについては、大まかな分類として以下をイメージしていただくと良いです。
GET:データの取得
POST:データの登録、更新
POSTでもデータ取得を目的としたリクエストをすることがありますが、基本的には上記の認識でいるとよいでしょう。
他にデータの送り方がGETとPOSTとで違います。
GETはクエリ文字列で、POSTはBodyでデータを渡すルールになります。
詳しくは次の章で説明します。
httpのGETとPOSTの使い方
では、httpのGETとPOSTについて、具体的にどのように使用するかを簡単に例を出しつつ書いていきます。
httpのルールとしてやり取りするデータは以下のような形になります。
URLなどの基本的な情報(httpメソッドはここに分類されます)
ヘッダー情報(Bodyの形式や認証などの属性情報)
Body情報(実際の送りたいデータまたはほしいデータ)
詳細は以下を見て頂くと良いかと思います。
HTTP概要
GET
GETの特性として、データを渡す際は原則クエリ文字列を使用しBodyは使用しません。
クエリ文字列というのはURLにパラメータを付与する書き方です。
以下のような感じです。
https://{ホスト}/user?name=tanaka
URLの後ろに?を付けます。その後に「項目名(キー)=値」といったように指定をすることで値を渡す方法です。
複数値を渡したい場合は&を付けることで「項目名=値」を複数指定が可能です。
GETで値を渡すケースとしては、主に検索キーが多いです。
上記の場合ですと名前がtanakaと一致するユーザ情報を取得するといったイメージになります。
URLに付与される情報なので、内容が丸見えの状態です。
POST
POSTについては、逆にBodyに渡すデータを設定します。
Bodyはクエリ文字列とは違い、丸見えの状態ではないので、httpsなどの暗号化されている場合は基本的に中身をみられることはありません。
なので、よくあるアカウント登録など登録情報をサーバへ送りたい場合はPOSTを利用することになります。
最後に
httpのGETとPOSTについて説明してみました。
まとめると以下のようなイメージです。
・GETは取得、POSTは登録や更新
・データの渡し方はGETはクエリ文字列、POSTはBody
上記とあわせてREST APIについても学ぶと良いかと思います。
以下の記事にまとめていますので、良ければ参考頂けたらと思います。
コメント