Możesz korzystać z API za pomocą curl czy fetch - umowa jest prosta, jeden nagłówek X-Api-Key, JSON w obu kierunkach. Jednak gdy masz więcej niż 758 endpointów, a zapytania mają tuzin pola, typowany klient oszczędza godziny: autodopasowanie ścieżek, typy zapytań i odpowiedzi, automatyczne powtarzanie na niestabilnej sieci.
Dlatego w naszej firmie mamy trzy oficjalne SDK, wygenerowane z jednego OpenAPI 3.1-kontraktu.
Instalacja
Dział zatytułowany „Instalacja”# TypeScript / JavaScriptnpm install @astroway/sdk
# Pythonpip install astroway
# PHPcomposer require astroway/sdkMinimalny przykład
Dział zatytułowany „Minimalny przykład”Ten sam wywołanie mapy nieba trzema językami.
TypeScript - cienka warstwa nad openapi-fetch (~6 KB w czasie wykonania), z autodopasowaniem ścieżek:
import { Astroway } from '@astroway/sdk';
const aw = new Astroway({ apiKey: process.env.ASTROWAY_API_KEY! });
const { data: chart } = await aw.client.POST('/chart', { body: { date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.4501, longitude: 30.5234, houseSystem: 'P', },});
// aw.client.POST is the raw typed fetch, so `chart` is the { ok, data } envelopeconsole.log(chart.data.houses.ascendant); // 212.0952574979425Python - synchroniczny Astroway i asynchroniczny AsyncAstroway z identyczną powierzchnią, powyżej httpx:
from astroway import Astroway
aw = Astroway(api_key=os.environ['ASTROWAY_API_KEY'])
chart = aw.post('/chart', body={ 'date': '1990-07-14', 'time': '14:30:00', 'timezoneOffset': 3, 'latitude': 50.4501, 'longitude': 30.5234, 'houseSystem': 'P',})
print(chart['houses']['ascendant'])PHP - powyżej Guzzle 7 i PSR-18:
<?phpuse Astroway\Astroway;
$aw = new Astroway(['apiKey' => getenv('ASTROWAY_API_KEY')]);
$chart = $aw->post('/chart', body: [ 'date' => '1990-07-14', 'time' => '14:30:00', 'timezoneOffset' => 3, 'latitude' => 50.4501, 'longitude' => 30.5234, 'houseSystem' => 'P',]);
echo $chart['houses']['ascendant'];Co wspólne wśród wszystkich trzech
Dział zatytułowany „Co wspólne wśród wszystkich trzech”Trzy różne języki, ale identyczne gwarancje - bo wszystkie trzy generowane są z tego samego OpenAPI-kontraktu:
- Typy zapytań i odpowiedzi dla wszystkich endpointów. TS daje autodopasowanie ścieżek i typizowane ciała; Python - PEP 561 typizowany pakiet; PHP - typizowane sygnatury. IDE podpowiada pola, a nie dokumentacja w sąsiedniej zakładce.
- Wbudowany retry z backoff na
408,409,429,5xx. Tymczasowy problem sieciowy lub limitowanie szybkości nie powali twojego kodu - klient powtarza sam. - Stainless-style hierarchia błędów. Błędy typizowane są według klas, a nie jako jeden łańcuch w
catch. Lubi się konkretny typ -RateLimitError,ValidationError- i obsługuje się go punktowo. - OpenAPI 3.1 jako źródło. Dodano endpoint w API - pojawia się w SDK na następnym wydaniu, bez ręcznego dublowania.
- OIDC + SLSA-prowenanc na publikacjach: TS i PHP - przez Trusted Publisher / auto-mirror, Python - Trusted Publisher OIDC na PyPI. łańcuch dostarczania jest sprawdzany.
Base URL w każdym - https://api.astroway.info/v1/, klucz jest przesyłany nagłówkiem X-Api-Key. Ten sam klucz, który jest używany w zwykłych HTTP-zapytaniach; SDK niczego nie zmienia w autoryzacji.
Framework-otoczenia i mapę
Dział zatytułowany „Framework-otoczenia i mapę”Powyżej trzech podstawowych SDK są gotowe integracje pod konkretny stack:
@astroway/react- huki dla React-zastosunkówastroway/sdk-symfony- pakiet dla Symfonyastroway/sdk-laravel- pakiet dla Laravel
W pracy, ale jeszcze nie opublikowane - Go, Ruby i Rust. Ich strony są już w katalogu SDK z prewizualizowanymi komendami instalacyjnymi; kiedy pakiet wychodzi do rejestru, status zmienia się na “dostępny”.
Rozpocząć
Dział zatytułowany „Rozpocząć”- Klucz na dashboard/sign-up - 10 000 kredytów na miesiąc bezpłatnie
- Zainstaluj SDK w swoim języku (komendy powyżej)
- Pierwsze zapytanie - mapa nieba z przykładu powyżej, podstaw swój klucz w
ASTROWAY_API_KEY
Pełna lista SDK z przykładami pod każdym - na stronie SDK.
Ten sam Swiss Ephemeris, co w Solar Fire - w 4 liniach kodu.
Darmowy klucz bez karty. 5 000 wywołań miesięcznie do pierwszej płatności.