REST API rokasgrāmata

Savienojums ar NowMetrix REST API

Izveidojiet API atslēgu, droši nosūtiet to kopā ar katru pieprasījumu un pirms analītikas datu pieprasīšanas pārbaudiet savienojumu ar nelielu konta konteksta atbildi.

1. Izveidojiet un aizsargājiet API atslēgu

Piesakieties NowMetrix, atveriet Iestatījumi → API un izveidojiet integrācijai paredzētu API atslēgu ar nosaukumu, piemēram, Iekšējais informācijas panelis vai Google Sheets. Varat izmantot līdz 10 aktīvām atslēgām. Jaunu vai nomainītu atslēgu nokopējiet nekavējoties: tās pilnā vērtība tiek parādīta tikai vienu reizi.

Izturieties pret atslēgu kā pret paroli. Glabājiet to servera puses vides mainīgajā vai noslēpumu pārvaldniekā, nekad neiekļaujiet to pirmkoda repozitorijā un nekad neizpaudiet pārlūkprogrammas JavaScript kodā.
NOWMETRIX_API_KEY=nm_YOUR_KEY

Atslēgas pārdēvēšana nemaina tās vērtību. Vienas atslēgas nomaiņa vai atsaukšana ietekmē tikai šo atslēgu. Visas atslēgas izmanto sava NowMetrix lietotāja atļaujas un kopīgi izmanto katra tracker pieprasījumu ierobežojumu.

2. Nosūtiet atslēgu kopā ar katru pieprasījumu

REST API ir bezstāvokļa: nav nepieciešams atsevišķs pieteikšanās pieprasījums vai pastāvīga sesija. Nosūtiet API atslēgu kā Bearer tokenu katrā HTTPS pieprasījumā.

GET https://api.nowmetrix.com/api/me
Authorization: Bearer nm_YOUR_KEY
Accept: application/json
  • Pamata URL: https://api.nowmetrix.com
  • Autentifikācija: Authorization: Bearer nm_YOUR_KEY
  • Savienojuma pārbaude: GET /api/me tracker parametrs nav nepieciešams.
  • Taimauti: katrā klientā iestatiet ierobežotu savienojuma un atbildes gaidīšanas laiku.

3. Pārbaudiet savienojumu, izmantojot cURL

Izmantojiet cURL, lai terminālī ātri pārbaudītu savienojumu.

API_KEY="nm_YOUR_KEY"

curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer ${API_KEY}" \
  --header "Accept: application/json" \
  "https://api.nowmetrix.com/api/me"

Veiksmīgs pieprasījums atgriež HTTP 200 un tracker sarakstu, kuram API atslēgai ir piekļuve:

{
  "authenticated": true,
  "current_tracker": "TRACKER_ID",
  "trackers": [
    {
      "tracker": "TRACKER_ID",
      "host": "example-media.test"
    },
    {
      "tracker": "SECOND_TRACKER_ID",
      "host": "example-studio.test"
    }
  ]
}

PHP 8+

Izmantojiet PHP cURL paplašinājumu un glabājiet API atslēgu vides mainīgajā.

<?php

$apiKey = getenv('NOWMETRIX_API_KEY');
if (!is_string($apiKey) || $apiKey === '') {
    throw new RuntimeException('NOWMETRIX_API_KEY is not set.');
}

$curl = curl_init('https://api.nowmetrix.com/api/me');
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Accept: application/json',
    ],
    CURLOPT_TIMEOUT => 10,
]);

$body = curl_exec($curl);
if ($body === false) {
    $error = curl_error($curl);
    curl_close($curl);
    throw new RuntimeException($error);
}

$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);

if ($status < 200 || $status >= 300) {
    throw new RuntimeException("NowMetrix API returned HTTP {$status}: {$body}");
}

$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($data);

JavaScript (Node.js 18+)

Serverī izmantojiet iebūvēto fetch API. Neizpaudiet API atslēgu pārlūkprogrammas JavaScript kodā.

const apiKey = process.env.NOWMETRIX_API_KEY;
if (!apiKey) throw new Error('NOWMETRIX_API_KEY is not set.');

async function main() {
  const response = await fetch('https://api.nowmetrix.com/api/me', {
    headers: {
      Authorization: `Bearer ${apiKey}`,
      Accept: 'application/json',
    },
    signal: AbortSignal.timeout(10_000),
  });

  const body = await response.text();
  if (!response.ok) {
    throw new Error(`NowMetrix API returned HTTP ${response.status}: ${body}`);
  }

  console.log(JSON.parse(body));
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

Python 3

Pakotne requests nodrošina vienkāršu klientu ar skaidri norādītu taimautu un statusa apstrādi. Instalējiet to ar komandu python -m pip install requests.

import os
import requests

api_key = os.environ["NOWMETRIX_API_KEY"]
response = requests.get(
    "https://api.nowmetrix.com/api/me",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Accept": "application/json",
    },
    timeout=10,
)
response.raise_for_status()
print(response.json())

Java 11+

Lai nosūtītu autentificētu pieprasījumu, pietiek ar Java standarta HttpClient.

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class NowMetrixExample {
    public static void main(String[] args) throws Exception {
        String apiKey = System.getenv("NOWMETRIX_API_KEY");
        if (apiKey == null || apiKey.isBlank()) {
            throw new IllegalStateException("NOWMETRIX_API_KEY is not set.");
        }

        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.nowmetrix.com/api/me"))
            .timeout(Duration.ofSeconds(10))
            .header("Authorization", "Bearer " + apiKey)
            .header("Accept", "application/json")
            .GET()
            .build();

        HttpResponse<String> response = client.send(
            request, HttpResponse.BodyHandlers.ofString()
        );
        if (response.statusCode() < 200 || response.statusCode() >= 300) {
            throw new IllegalStateException(
                "NowMetrix API returned HTTP " + response.statusCode() + ": " + response.body()
            );
        }

        System.out.println(response.body());
    }
}

C# (.NET 6+)

Izmantojiet HttpClient ar Bearer autorizācijas galveni un lietotnes līmeņa taimautu.

using System.Net.Http.Headers;

var apiKey = Environment.GetEnvironmentVariable("NOWMETRIX_API_KEY")
    ?? throw new InvalidOperationException("NOWMETRIX_API_KEY is not set.");

using var client = new HttpClient
{
    BaseAddress = new Uri("https://api.nowmetrix.com"),
    Timeout = TimeSpan.FromSeconds(10),
};
client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", apiKey);
client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json")
);

using var response = await client.GetAsync("/api/me");
var body = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
    throw new HttpRequestException(
        $"NowMetrix API returned HTTP {(int)response.StatusCode}: {body}"
    );
}
Console.WriteLine(body);

Go 1.20+

Izmantojiet standarta net/http klientu un dekodējiet JSON atbildi vispārīgā struktūrā vai pašu izveidotos tipos.

package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

func main() {
	apiKey := os.Getenv("NOWMETRIX_API_KEY")
	if apiKey == "" {
		panic("NOWMETRIX_API_KEY is not set")
	}

	request, err := http.NewRequest(http.MethodGet, "https://api.nowmetrix.com/api/me", nil)
	if err != nil {
		panic(err)
	}
	request.Header.Set("Authorization", "Bearer "+apiKey)
	request.Header.Set("Accept", "application/json")

	client := &http.Client{Timeout: 10 * time.Second}
	response, err := client.Do(request)
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()

	if response.StatusCode < 200 || response.StatusCode >= 300 {
		panic("NowMetrix API returned " + response.Status)
	}

	var data map[string]any
	if err := json.NewDecoder(response.Body).Decode(&data); err != nil {
		panic(err)
	}
	fmt.Printf("%#v\n", data)
}

Ruby 3+

Ruby standarta bibliotēka ļauj nosūtīt pieprasījumu bez papildu HTTP pakotnes.

require 'json'
require 'net/http'

api_key = ENV.fetch('NOWMETRIX_API_KEY')
uri = URI('https://api.nowmetrix.com/api/me')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = "Bearer #{api_key}"
request['Accept'] = 'application/json'

response = Net::HTTP.start(
  uri.hostname,
  uri.port,
  use_ssl: true,
  open_timeout: 10,
  read_timeout: 10
) { |http| http.request(request) }

unless response.is_a?(Net::HTTPSuccess)
  raise "NowMetrix API returned HTTP #{response.code}: #{response.body}"
end

puts JSON.pretty_generate(JSON.parse(response.body))

Autentifikācijas un transporta kļūdu apstrāde

Pirms veiksmīgas atbildes datu dekodēšanas pārbaudiet HTTP statusu. Kļūdu atbildēs tiek izmantota stabila JSON struktūra ar mašīnlasāmu error.code vērtību.

  • 401 missing_token: trūkst Authorization galvenes.
  • 401 invalid_token: atslēga nav derīga, ir atsaukta vai aizstāta.
  • 403 site_not_authorized: atslēgai nav piekļuves pieprasītajam tracker.
  • 429 rate_limit_exceeded: pirms atkārtota mēģinājuma uzgaidiet Retry-After intervālu.
  • 503: īslaicīgu aizmugursistēmas kļūmju gadījumā atkārtojiet pieprasījumu, pakāpeniski palielinot intervālu, bet nosakot tā maksimālo robežu.
{
  "error": {
    "code": "invalid_token",
    "message": "Bearer token is invalid or revoked."
  }
}

Izmantojiet tracker paredzētu endpointu

No current_tracker nolasiet trackers[].tracker vai vērtību /api/me, pēc tam nosūtiet šo tracker ID kā site vaicājuma parametru.

GET https://api.nowmetrix.com/v1/realtime?site=TRACKER_ID
Authorization: Bearer nm_YOUR_KEY
Accept: application/json