Pakettisopimus
Suunniteltu Composer-paketti on nordicdevhouse/sdk nimiavaruudessa NordicDevhouse\Sdk. Se noudattaa PSR-4:ää, hyväksyy PSR-18-siirron ja tarjoaa muuttumattomat arvo-objektit.
| Jakelupaketti | Nimiavaruus tai import | Ajonaikainen tuki |
|---|---|---|
| nordicdevhouse/sdk | NordicDevhouse\Sdk | PHP 8.2+ ja PSR-yhteensopivat ympäristöt |
Luo asiakas ja käytä sitä uudelleen
Asiakas ei riipu frameworkista. Tehdas löytää asennetut PSR-toteutukset, ja eksplisiittinen konstruktorinjektio pitää siirron ja kellon testattavina.
use NordicDevhouse\Sdk\Client;
use NordicDevhouse\Sdk\ScrapeRequest;
$client = Client::fromApiKey(
$_ENV['NORDIC_DEVHOUSE_API_KEY'],
maxRetries: 3,
);
$result = $client->scrape()->run(new ScrapeRequest(
url: 'https://example.com/products',
formats: ['json'],
idempotencyKey: 'catalog-2026-08-11',
));
echo $result->jobId;Hallitse kestävää työtä
Start ja wait mallintavat kestävän asynkronisen palvelintyön ilman promise-pakkoa julkisessa rajapinnassa. Jonoworkerit tallentavat palautetun työtunnisteen kutsujen välissä.
$job = $client->scrape()->start(new ScrapeRequest(
url: 'https://example.com/products',
formats: ['json'],
));
$result = $client->jobs()->wait(
id: $job->id,
timeout: new DateInterval('PT10M'),
);Julkiset mallit
Nimet noudattavat kielen käytäntöjä, mutta kaikki SDK:t säilyttävät samat kentät ja työn tilojen semantiikan.
| Käsite | Sopimus |
|---|---|
| Asiakkaan asetukset | API-avain, perusosoite, aikakatkaisu, retry-raja ja valinnainen testisiirto |
| Keräyspyyntö | URL, tulosmuodot, webhook-osoite, metatiedot ja idempotenssiavain |
| Työ | Vakaa tunniste, tila, aikaleimat, edistyminen ja varoitukset |
| Työn tulos | Työtunniste, tietuemäärä, tyypitetty data, metatiedot ja pyyntötunniste |
| Webhook-tapahtuma | Varmennettu tapahtumatunniste, tyyppi, aikaleima ja tyypitetty data |
Käsittele virheet idiomaattisesti
Tyypitetyt poikkeukset toteuttavat yhteisen NordicDevhouseException-rajapinnan. Uudelleen yritettävät poikkeukset tarjoavat Retry-After-arvon DateIntervalina ja validointivirheet kentittäin.
try {
return $client->scrape()->run($request);
} catch (RateLimitException $error) {
$logger->warning('Rate limited', [
'request_id' => $error->requestId,
'retry_after' => $error->retryAfter,
]);
throw $error;
} catch (ValidationException $error) {
return validationResponse($error->issues);
} catch (NordicDevhouseException $error) {
$logger->error('SDK failure', ['request_id' => $error->requestId]);
throw $error;
}Varmenna raaka webhook-runko
Varmennus käyttää täsmälleen vastaanotettuja tavuja, tarkistaa HMAC-SHA256-allekirjoituksen ja aikaleiman sallitun eron ja palauttaa tyypitetyn tapahtuman. Tallenna varmennettu tapahtumatunniste kaksoiskäsittelyn estämiseksi.
$event = $client->webhooks()->verify(
payload: (string) $request->getBody(),
signature: $request->getHeaderLine('Nordic-Signature'),
secret: $_ENV['NORDIC_WEBHOOK_SECRET'],
);
if ($event->type === 'scrape.completed') {
importResult($event->data->jobId);
}Ajonaikaiset ja elinkaaren säännöt
- 1Vaadi PHP 8.2 ja strict types paketin lähdekoodissa
- 2Noudata PSR-4:ää ja hyväksy PSR-18-, PSR-17- ja PSR-3-adapterit
- 3Pidä vastausobjektit muuttumattomina ja täysin annotoituina staattiseen analyysiin
- 4Älä vaadi Laravelia tai Symfonya ydinpaketissa
- 5Julkaise framework-providerit ohuina valinnaisina adaptereina