こんにちは、blueです。
前回はLINE Notifyからのアクセストークンの取得について説明しました。
前回の記事はこちら
今回はHTTPリクエストのGETとPOSTについて説明をします。
できる限りわかりやすく説明しますので勉強していってください。
LINE Notify API Document
前回もお話ししましたが、LINE Notify API Documentは以下にあります。
この中の「通知系」が今回使用するAPIになります。
そこには以下のように記載されています。
ここの「リクエスト方法」が今回のHTTPリクエストで記載する内容になります。
この記載より、Line Notifyの通知にはMethodとしてPOST方式が使われていることがわかります。
詳細について次から説明します。
HTTPリクエスト
自分のパソコンからサーバへのデータの送信方法は
・GET方式
・POST方式
があります。この2つの違いは使用場面とサーバーへのリクエストパラメーターの送り方の違いにあります。
次からそれぞれについて説明します。
GET方式
GET方式の特徴は以下になります。
- 主にサーバーからデータを取得する際に使用する
- リクエストパラメーターはURLにくっつけて送る
アマゾンでの商品検索やGoogle検索はGET方式になります。
ここで検索窓に入れる文字列はリクエストパラメータになります。
GET方式でのリクエストパラメータはURLの?に記載されて送られます。
以下は以前アマゾンで商品名として「ガンダム」を検索した際のURLですが、https://www.amazon.co.jp/sのあとに「?k=ガンダム」という記載があることがわかると思います。
リクエストパラメータは「パラメーター名=値」という形で記載されます。
またパラメーターが複数ある場合は&でくくります。
つまりこのURLの場合はk, __mk_ja_JP, crid, sprefix, refという5つのリクエストパラメーターを使用したことになります。
この方式は記載が簡単というのは見て分かっていただけると思いますが、弱点もあります。
- URLが冗長になる
- URLに常にパラメーターが表示される。
前者は長い文章や画像のようなデータを送ることが難しく、後者はパスワードなどの個人情報が漏れやすくなります。
そんな時に使用するのがPOSTメソッドになります。
POST方式
POST方式の特徴は以下になります。
- サーバへ情報を登録する時に使用する(データベースへの格納など)
- リクエストパラメーターはリクエストヘッダーとボディに着ける
POST方式はパラメーターをURLにくっつけずに送る方式のことです。
パラメーターはリクエストヘッダーとボディにつけるようになっています。
この方式はパラメーターがURLに見えないので安全です。
またURLに記載しない為、パラメーターの長さも気にする必要はありません。
ログイン画面やお問合せフォーム入力など画面から情報を入力して送信ボタンを押すようなタイプのものは基本的にこの方式になります。
この方式は主にデータを送信する際に使います。
GET方式のコード
VBAでのHTTPリクエストのコードについては以下で詳しく書かれています。
GET方式で使うメソッドは主に以下の2つになります。
- open(“method“, “URL“[, asyncFlag[, “userName“[, “password“]]])
指定したメソッド method ( GET|POST|PUT|PROPFIND )で指定URL URL にリクエストする。
リクエストの成功・失敗に関わらず次の処理を実行する場合があれば、asynFlag を False に。
それ以外は Ture にする。省略すると True で実行。
userName、password は認証が必要な場合にのみ指定。
引用:http://ponpon-village.net/ajax/xmlhttp.htm#open
今回はGET方式なので”method”は”GET”,”URL”に?付きのURLを記載します。
- send
サーバに HTTP リクエストを送信する。content には送信するデータを設定出来る。
送信先の URL、送信方式(GET や POST など)は、open で指定したものになる。
データを送信しても、送信先でそのデータを処理するようにしていないと何も変化なし。
データを送信しない時でも必要で、その時は send(null) とする。
引用:http://ponpon-village.net/ajax/xmlhttp.htm#send
GET方式は送信するデータを?以降に記載する為引数は不要です。
POST方式のコード
POST方式で使うメソッドは主に以下の3つになります。
- open(“method“, “URL“[, asyncFlag[, “userName“[, “password“]]])
- setRequestHeader(“label“, “value“)
HTTP要求時に送られるヘッダーを追加する。
label は、追加したいヘッダー名。value は、その値。
引用:http://ponpon-village.net/ajax/xmlhttp.htm#send
リクエストヘッダーはリクエストする為に必要な情報を入れます。
代表的なものはパスワードや認証コードがあります。
ここにはヘッダー名と値を入れます。
- send(content)
Send内には受け渡しをする際のリクエストパラメータ情報を入れます。
ここはHTTPリクエストボディになります。
記載方法はGET方式と同じ「パラメーター名=値」という形になります。
~その他GETとPOSTについて参考にさせていただいたサイト~
APIについて(Power Automateの勉強会の資料です。簡潔でわかりやすいです)
Microsoft Graphってなに? (Office 365勉強会の資料です。絵がわかりやすいです)
GET/POSTとは?【分かりやすい解説シリーズ #30】【プログラミング】
今回のまとめ
今回はHTTPリクエストのGETとPOSTについて説明をしました。
GET方式もPOST方式もデータを送るという意味では一緒ですが使用場面は大きく異なります。
POST方式の方がリクエスト情報をURLと分けて書くためやや複雑にはなりますが、記載方法は決まっており、パラメータも各API Documentから取得すればOKです。
次回は実際にLINEで通知をさせる為の実コードについて説明します。
以下noteもご覧ください。このブログ記事をもとにした実践コードを公開しています。
Selenium-VBAでのWebスクレイピングに関する記事はこちらをどうぞ
【ExcelVBA‐Selenium】【永久保存版】スクレイピングに必要なSeleniumのインストール方法教えます
【Selenium-VBA】Yahooメールへのログイン方法をわかりやすく説明する
ChromeでのWebスレイピングをできる限りわかりやすく説明する(Excel VBA)
【ExcelVBA‐Selenium】Chrome driverのバージョンエラーが出た時の対処法(2021/10/7更新)
【Selenium-VBA】Seleniumを用いたスクレイピングでテーブル情報を取得する1
【Selenium-VBA】スクレイピングをするのに必要なHTMLについて説明します1
【Selenim-VBA】起動済みのChromeを用いてSeleniumによるスクレイピングを行う
【Selenium-VBA】JavaScriptを使ってスクレイピングをしてみる1
【VBA】SeleniumBasicにおけるクラス、メソッド、プロパティ一覧(日本語版)
Web-APIを用いたデータ取得に関する記事はこちらをどうぞ
【VBA】Web APIを使ってデータを取得する(OpenWeatherMap)1
【VBA】Web APIを使って時間別天気予報を取得する(気象庁API)
【VBA】Web APIを使ってLINE通知を行う(LINE Notify)1
コメント