نمونهکدها
زبان برنامهٔ خود را انتخاب کنید. هر نمونه یک IP را جستوجو میکند و پاسخ را در خروجی نشان میدهد.
پیش از اجرا، کلید خود را در متغیر محیطی TARKAV_API_KEY روی سرور تنظیم کنید. نمونهها کلید را از همین متغیر میخوانند. هر اجرا یک واحد مصرف دارد و به اینترنت نیاز دارد.
جاوااسکریپت و تایپاسکریپت
این نمونه در محیط Node.js با پشتیبانی از fetch اجرا میشود. آن را با نام lookup.mjs ذخیره کنید و با node lookup.mjs اجرا کنید. همین کد در برنامهٔ تایپاسکریپت سمت سرور نیز قابل استفاده است.
const key = process.env.TARKAV_API_KEY;
if (!key) throw new Error('TARKAV_API_KEY is required');
const response = await fetch('https://api.tarkav.ir/v1/lookup', {
method: 'POST',
headers: {
Authorization: `Bearer ${key}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ ip: '2.144.0.1' }),
signal: AbortSignal.timeout(10_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());پایتون
از کتابخانهٔ استاندارد Python 3 استفاده میکند و بستهٔ اضافه نمیخواهد. آن را در lookup.py ذخیره کنید و با python3 lookup.py اجرا کنید. پاسخ ناموفق، خطای HTTPError ایجاد میکند.
import json
import os
import urllib.request
request = urllib.request.Request(
'https://api.tarkav.ir/v1/lookup',
data=json.dumps({'ip': '2.144.0.1'}).encode(),
headers={
'Authorization': f"Bearer {os.environ['TARKAV_API_KEY']}",
'Content-Type': 'application/json',
},
method='POST',
)
with urllib.request.urlopen(request, timeout=10) as response:
print(json.load(response))گو
فایل را با نام lookup.go ذخیره کنید و با go run lookup.go اجرا کنید. به بستهٔ اضافه نیاز ندارد.
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
"time"
)
func main() {
key := os.Getenv("TARKAV_API_KEY")
if key == "" { panic("TARKAV_API_KEY is required") }
req, err := http.NewRequest("POST",
"https://api.tarkav.ir/v1/lookup",
strings.NewReader(`{"ip":"2.144.0.1"}`))
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + key)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 10 * time.Second}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
if res.StatusCode != http.StatusOK { panic(res.Status) }
body, err := io.ReadAll(res.Body)
if err != nil { panic(err) }
fmt.Println(string(body))
}پیاچپی
به افزونهٔ cURL نیاز دارد. فایل را با نام lookup.php ذخیره و با php lookup.php اجرا کنید.
<?php
$key = getenv('TARKAV_API_KEY');
if (!$key) throw new RuntimeException('TARKAV_API_KEY is required');
$curl = curl_init('https://api.tarkav.ir/v1/lookup');
curl_setopt_array($curl, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(['ip' => '2.144.0.1']),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $key,
'Content-Type: application/json',
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($curl);
if ($body === false) throw new RuntimeException(curl_error($curl));
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status !== 200) throw new RuntimeException('HTTP ' . $status);
echo $body;راست
در پروژهٔ خود وابستگیهای زیر را در بخش dependencies فایل Cargo.toml قرار دهید. سپس نمونه را در src/main.rs بگذارید و با cargo run اجرا کنید.
[dependencies]
reqwest = { version = "0.12", features = ["blocking", "json"] }
serde_json = "1"
use std::{env, error::Error, time::Duration};
fn main() -> Result<(), Box<dyn Error>> {
let key = env::var("TARKAV_API_KEY")?;
let client = reqwest::blocking::Client::builder()
.timeout(Duration::from_secs(10))
.build()?;
let response = client
.post("https://api.tarkav.ir/v1/lookup")
.bearer_auth(key)
.json(&serde_json::json!({"ip": "2.144.0.1"}))
.send()?
.error_for_status()?;
println!("{}", response.text()?);
Ok(())
}برای استفاده در برنامهٔ واقعی، پاسخ را بر اساس معنی فیلدها پردازش کنید و برای درخواست ناموفق، راهنمای رفع خطاها را در نظر بگیرید.