はじめに
ZOZOではVBScriptといったレガシーな技術をJavaなどに置き換えるリプレイスを進めています。
そのため、現在絶賛過渡期です。
しかし、まだVBScriptで書かれたコードを見にいくことも多く、VBScriptで改修を行う場面もあります。
今回は、VBScriptでAPIを叩いてみました!
この記事のゴール
この記事を読んだら、誰でもVBScriptでAPIを叩くことができるようになります。
実装
早速実装例を見てみましょう。
option explicit
dim args
dim method
dim url
dim oHTTP
set args = wscript.arguments
if args.count < 1 then
wscript.echo "No URL provided"
wscript.quit
end if
set oHTTP = createObject("MSXML2.ServerXMLHTTP")
method = "GET"
url = args(0)
wscript.echo "method: " & method
wscript.echo "URL: " & url
oHTTP.open method, url, false
oHTTP.send
wscript.echo "Status: " & oHTTP.status & " " & oHTTP.statusText
wscript.echo oHTTP.responseText
コードを実装したら下記のコマンドで実行しましょう。
例として、Qiita APIのv2/tags
をたたいてvbscript
のタグ情報を取得してみます。
cscript httpTest.vbs https://qiita.com/api/v2/tags/vbscript
このコマンドでは、第一引数にURLを指定しています。
実行すると次のような結果が取得できました。
method: GET
URL: https://qiita.com/api/v2/tags/vbscript
Status: 200 OK
{"followers_count":186,"icon_url":"https://s3-ap-northeast-1.amazonaws.com/qiita-tag-image/60640a626e82e31a031a5d0afe5c08a6c3ba6b58/medium.jpg?1598802046","id":"VBScript","items_count":510}
APIのアクセスに成功し、データを取得できていることがわかります。
解説
コードの中の処理はそれぞれ何をしているのか見ていきましょう。
処理の流れ
まずは、処理の流れです。
コマンドラインの第一引数に指定したURLにアクセスし、GETメソッドでデータを取得しています。
このとき、以下の情報を表示させています。
- HTTPメソッド
- URL
- HTTPステータスコード+ステータステキスト
- レスポンスボディ
引数指定
下記の処理で引数を指定しています。
set args = wscript.arguments
if args.count < 1 then
wscript.echo "No URL provided"
wscript.quit
end if
args
に引数を配列として渡しています。
if
文内では、引数が何も指定されていないとNo URL provided
というエラーメッセージが表示されて、処理を終了させています。
ServerXMLHTTPオブジェクト生成
下記の処理でServerXMLHTTPオブジェクトを生成しています。
set oHTTP = createObject("MSXML2.ServerXMLHTTP")
ServerXMLHTTPは、異なる Web サーバー上のファイルまたはオブジェクト間で HTTP 接続を確立できるようにするメソッドとプロパティを提供します。
HTTPリクエストを送信
oHTTP.open method, url, false
Open
メソッドで「要求するメソッド」「URL」「非同期通信かどうか」を指定しています。
oHTTP.Send
Send
メソッドでサーバーに HTTPリクエストを送信し、応答を受信します。
レスポンス結果を出力
wscript.echo "Status: " & oHTTP.status & " " & oHTTP.statusText
wscript.echo oHTTP.responseText
status
プロパティで「HTTPステータスコード」、statusText
で「HTTPステータス」、responseText
で「レスポンスボディの中身」を出力します。
まとめ
この記事では、VBScriptでAPIを叩く方法を説明しました。
VBScriptでもこうやったらAPI叩けるんだ〜くらいに思ってもらえたら幸いです。
参考文献