Windows PowerShellからWeb APIを呼び出す ~Invoke-WebRequest~

その他小ネタ
この記事は約5分で読めます。
広告

この記事の目的

Windowsで特別なツールを使わずに気軽にWeb APIの呼び出しテストを行うために、Windows PowerShellを使った方法をご紹介します。

本記事で使用したWindows PowerShellのバージョンは5.1です。

テストで呼び出すWeb API

下記のWeb APIを使わせて頂きます。人物情報の参照/追加/変更/削除が可能です。

すぐ呼び出し可能なWebAPIのサンプル
実際に呼び出せるREST WebAPIのサンプルです。WebAPI呼び出しの練習やお試しにご利用ください。
利用される場合は、利用条件をよく読んでご利用ください。例えば、このWeb APIを非常に多くの回数呼び出すことは禁止されています。

サンプルプログラム

人物情報の参照

「織田信長」の人物情報を参照するためのWeb APIは、下記プログラムで呼び出すことができます。

  1. Invoke-WebRequestメソッドでWeb APIを呼び出します。
  2. レスポンスの内容が$res.Contentに入っているため、ConvertFrom-JsonとConvertTo-Jsonを使って見やすく整形します。
# Web APIを呼び出す
$base_url = "https://umayadia-apisample.azurewebsites.net/api/persons/"
$name = "織田信長"
$url = $base_url + $name

$res = Invoke-WebRequest -Method GET -Uri $url

# JSON文字列を整形
ConvertFrom-Json $res.Content | ConvertTo-Json

呼び出し結果は下記のとおりです。「織田信長」の人物情報を参照することができました。

{
    "success":  true,
    "data":  {
                 "name":  "織田信長",
                 "note":  "本能寺の変",
                 "age":  12,
                 "registerDate":  "1534-07-03T04:14:25"
             }
}
Invoke-WebRequest (Microsoft.PowerShell.Utility) - PowerShell
The Invoke-WebRequest cmdlet sends HTTP, HTTPS, FTP, and FILE requests to a web page or web service. It parses the response and returns collections of forms, li...

人物情報の追加

「Aさん」の人物情報を追加するためのWeb APIは、下記プログラムで呼び出すことができます。

  1. Invoke-WebRequestメソッドでWeb APIを呼び出します。

その際に下記の指定を行います。

  • Method : API仕様にPOSTとあるので、POSTを指定します。
  • Body : 追加したい人物情報をJSON形式で指定します。
  • ContentType :  JSON形式のBodyを持つため、”application/json’を指定します。
$url = "https://umayadia-apisample.azurewebsites.net/api/persons/"
$body = [System.Text.Encoding]::UTF8.GetBytes(
    '{"name":"Aさん","note":"test","age":10,"registerDate":"2022-06-12T00:00:00"}'
    )

Invoke-WebRequest -Method POST -Uri $url -Body $body -ContentType 'application/json'

呼び出し結果は下記のとおりです。ステータスコードが200になっており、人物情報の追加に成功していることが分かります。

StatusCode : 200
StatusDescription : OK
Content : {"success":true,"data":null}

参考URL

本記事作成にあたり、下記URLを参考にさせて頂きました。

PowerShellでJSONを手軽に整形 - メモの日々(2022-04-01)
日記です

 

また、今回のWeb APIでは不要でしたが、レスポンスの日本語が文字化けするときには下記URLが参考になります。

Invoke-WebRequestの文字化け - Qiita
日本語のwebページをInvoke-WebRequestしたときに文字化けしていた場合の対処方法 Invoke-RestMethodの文字化け対策 - or1ko's diary gooラボ 形態素解析APIを試してみる - p...

 

コメント

タイトルとURLをコピーしました