📘

curlとInvoke-webRequestコマンドの使い方とオプション比較

2022/01/29に公開

1. はじめに

curlコマンドとInvoke-webRequestコマンドは、ターミナル画面でhttpリクエストを送ることが出来るコマンド

※現在、5章の使用例は随時、更新中です

2. curlコマンド

LinuxやMacで使用するコマンド
Windowsでも追加でインストールして使用することは可能

3. Invoke-webRequestコマンド

Windowsのpowershellに標準搭載されているコマンド

4. curlコマンドとInvoke-webRequestのオプションの対比

説明 curl Invoke-WebRequrest
メソッド -X/--request <メソッド名> -Method <メソッド名>
GET時のパタメータの渡し方1 URL?<key=value> URL?<key=value>
GET時のパタメータの渡し方2 -G/--get -d <パラメータ名=値> -Body @{key=value}
POST時のパタメータの渡し方 -d <パラメータ名=値> -Method "GET" -Body <パラメータ>
ヘッダ -H/--header <XXX> -Headers <XXX>
OAUTH2.0ヘッダ --oauth2-bearer <token> -Authentication OAuth -Token <token>
OAUTH2.0ヘッダその2 -H 'Authorization: Bearer <token>' -Headers 'Authorization: Bearer <token>'
ファイルダウンロード時の保存先パス -o/--output <保存先のファイルパス> -OutFile <保存先のファイルパス>
プロキシ経由 -x <proxy-URL:portNo> -Proxy <proxy-URL:portNo>

5. 使用例

  • URLはhogehoge.co.jpで統一しています

5.1. GETメソッド(パタメータなし)

curlコマンド
curl https://www.hogehoge.co.jp

or

curl -X GET https://www.hogehoge.co.jp

or

curl --request GET https://www.hogehoge.co.jp
Invoke-webRequestコマンド
Invoke-webRequest https://www.hogehoge.co.jp

or

Invoke-WebRequest -Method GET https://www.hogehoge.co.jp

5.2. GETメソッド(パタメータ[クエリストリング]有り)

  • URLの後ろに?をつけて、key=valueで設定する
  • 複数のパタメータを設定する場合、&で繋げる
  • curlでは-G -d/--data key=value -d/--data key=valueでも設定が可能
  • Invoke-webRequest-Body @{key="value"; key="value"}でも設定が可能(value値は""で括ったほうがよい)

例)keyとvalueにfoo=bar、buz=quxの2つの引数(クエリストリング)を渡す場合

curlコマンド
curl https://www.hogehoge.co.jp?foo=bar&buz=qux

or

curl -G -d foo=bar -d buz=qux https://www.hogehoge.co.jp
Invoke-webRequestコマンド
Invoke-webRequest https://www.hogehoge.co.jp?foo=bar&buz=qux

or

Invoke-webRequest -Method "GET" -Body @{foo=bar;buz=qux} https://www.hogehoge.co.jp

5.3. POSTメソッド

curlコマンド
curl -X "POST" https://www.hogehoge.co.jp
Invoke-webRequestコマンド
Invoke-webRequest -Method "POST" -d foo=bar -d buz=qux https://www.hogehoge.co.jp

5.3. POSTメソッド(ボディ部有り)

curlコマンド
curl -X "POST" -d foo=bar https://www.hogehoge.co.jp
Invoke-webRequestコマンド
Invoke-webRequest -Method "POST" -Body @{foo="bar"} https://www.hogehoge.co.jp

or
	
$body= @{
    foo="bar"
}
Invoke-webRequest -Method "POST" -Body $body https://www.hogehoge.co.jp

5.3 プロキシサーバを経由する場合

プロキシサーバのURLがhttp://proxy.co.jp:、ポート番号が8080の場合

curlコマンド
$ curl https://www.hogehoge.co.jp/ -x http://proxy.co.jp:8080
Invoke-webRequestコマンド
$ Invoke-webRequest https://www.hogehoge.co.jp/ -Proxy http://proxy.co.jp:8080

6. 参考サイト

https://curl.se/docs/manpage.html
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7.2

Discussion