自分のIPアドレスを調べるリクエスト例
すべての例は同じエンドポイントを呼び出します。どのIPアドレスが返されるかは、接続を確立するプロセスによって決まります。
ネイティブのfetchとAbortSignal.timeoutに対応したJavaScriptモジュールまたはブラウザーのコンソールを使用してください。
const response = await fetch(
"https://api.ipquery.io/?format=json",
{ signal: AbortSignal.timeout(5000) }
);
if (!response.ok) {
const message = await response.text();
throw new Error("IPQuery " + response.status + ": " + message);
}
const data = await response.json();
console.log(JSON.stringify(data, null, 2));
cURLのあるシェルで実行してください。HTTPエラー時は終了コードが0以外になり、診断メッセージはstderrに出力されます。
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/?format=json"
Python 3の標準ライブラリのみを使用します。タイムアウトはソケット操作に適用されます。
import json
from urllib.request import urlopen
with urlopen("https://api.ipquery.io/?format=json", timeout=5) as response:
data = json.load(response)
print(json.dumps(data, indent=2))
Goの標準ライブラリのみを使用します。main.goとして保存し、go run main.goを実行してください。
package main
import (
"io"
"log"
"net/http"
"os"
"time"
)
func main() {
client := &http.Client{Timeout: 5 * time.Second}
response, err := client.Get("https://api.ipquery.io/?format=json")
if err != nil { log.Fatal(err) }
defer response.Body.Close()
if response.StatusCode != http.StatusOK {
log.Fatalf("IPQuery %s", response.Status)
}
if _, err := io.Copy(os.Stdout, response.Body); err != nil {
log.Fatal(err)
}
}
各例では5秒のタイムアウトと各言語の標準HTTP機能を使用します。アプリケーション側で障害を処理し、失敗時に空のIPレコードで代用しないでください。