9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2022

Day 2

VBScriptでAPIを叩いてみた

Last updated at Posted at 2022-12-01

はじめに

ZOZOではVBScriptといったレガシーな技術をJavaなどに置き換えるリプレイスを進めています。
そのため、現在絶賛過渡期です。
しかし、まだVBScriptで書かれたコードを見にいくことも多く、VBScriptで改修を行う場面もあります。

今回は、VBScriptでAPIを叩いてみました!

この記事のゴール

この記事を読んだら、誰でもVBScriptでAPIを叩くことができるようになります。

実装

早速実装例を見てみましょう。

httpTest.vbs
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 APIv2/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リクエストを送信し、応答を受信します。

(参考:ServerXMLHTTPのメソッド)

レスポンス結果を出力

wscript.echo "Status: " & oHTTP.status & " " & oHTTP.statusText
wscript.echo oHTTP.responseText

statusプロパティで「HTTPステータスコード」、statusTextで「HTTPステータス」、responseTextで「レスポンスボディの中身」を出力します。

(参考:ServerXMLHTTPのプロパティ)

まとめ

この記事では、VBScriptでAPIを叩く方法を説明しました。
VBScriptでもこうやったらAPI叩けるんだ〜くらいに思ってもらえたら幸いです。

参考文献

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?