見出し画像

【GASを使ったHTTP通信】POST,GETについて

1.POST,GETとは
HTTP通信のリクエストメソッドの一部です。
GETはHTTPの最も基本的な動作で、指定されたデータを取り出します。
POSTはGETと違いデータをサーバーに送信出来ます。

2.GETについて
GETは指定したリソースを転送するようにリクエストするメソッドです。
なので、何か情報を検索したり取得するために使われるメソッドになります。
よく使われるものとして、ブラウザで検索してURLを開こうとした時に使われます。

GETメソッドではHTTPリクエスト行とHTTPヘッダー行を送信します。
curlコマンドでhttps://google.comに送信したリクエスト内容をみたものが以下になります。

コマンド
>curl --trace-ascii - https://google.com

0000: GET / HTTP/1.1
0010: Host: google.com
0022: User-Agent: curl/7.55.1
003b: Accept: */*

・リクエスト行
一行目:GET / HTTP/1.1
HTTP通信バージョン1.1のGETメソッドで行うことが書かれています。

・HTTPヘッダー行
二行目:Host: google.com
HTTP/1.1 で唯一の必須ヘッダです。
サーバーに対してサーバー名を送信してます。
この名前を手掛かりに同サーバー内でも別のサーバーとして判別します。

三行目:User-Agent: curl/7.55.1
送り主の情報をサーバーに伝えます。
今回の場合バージョン7.55.1のcurlから送信されたことが分かります。

四行目:Accept: */*
受信可能なデータ形式(MIMEタイプ)をサーバーに伝えます。
*(アスタリスク)はワイルドカードなのですべてのタイプが受信可能です。
MIMEタイプ例 データ形式
text/plain テキストファイル
text/html HTML文書
image/jpeg JPEG画像
audio/mp3 MP3ファイル
video/mp4 MP4ファイル

3.POSTについて
POSTはクライアントからサーバーへデータを送信するためのメソッドです。
なので登録画面やwebフォームや電子掲示板への投稿などでよく使用される。
POSTメソッドではHTTPリクエスト行とHTTPヘッダー行と空行一行とHTTPボディ部を送信します。
POSTのリクエスト内容は以下の通りです。

>curl -X POST --data 'hello' --trace-ascii - https://google.com

0000: POST / HTTP/1.1
0011: Host: google.com
0023: User-Agent: curl/7.55.1
003c: Accept: */*
0049: Content-Length: 7
005c: Content-Type: application/x-www-form-urlencoded
0000: 'hello'

・リクエスト行+HTTPヘッダー行
1~4行目
ここはGETとほとんど同じです。
GETメソッドがPOSTメソッドに変わっただけです。

5行目:Content-Length: 7
送信するデータ量を表しています。
単位はバイトです。

6行目:Content-Type: application/x-www-form-urlencoded
送信するデータ形式(MINEタイプ)です。
今回はapplication/x-www-form-urlencodedの形式で送っています。

・空行
空行がここに入ります。

・HTTPボディ部
7行目:’hello’
サーバーに送信されるデータです。

4.まとめ
GETもPOSTもHTTP通信のリクエストメソッドの一部です。
GETはシンプルで目的のデータを返してもらうだけです。
POSTはGETと違いデータを指定形式でサーバーに送信出来ます。

参考URL
・https://qiita.com/kanataxa/items/522efb74421255f0e0a1
・https://www.yoheim.net/blog.php?q=20120611
・https://www.tohoho-web.com/ex/http.htm

いいなと思ったら応援しよう!

mba_internship
よろしければ応援お願いします! いただいたチップは活動費に使わせていただきます!