내 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 레코드로 대체하지 마세요.