AstroWay/api v2.217.2 · pl
wszystkie systemy w normie

Trzy oficjalne SDK: TypeScript, Python i PHP zamiast surowego curl

Surowe HTTP działa, ale typowany klient oszczędza godziny: podpowiadanie ścieżek, typy żądań i odpowiedzi, wbudowany retry dla 408/409/429/5xx i hierarchia błędów w stylu Stainless. Omawiamy trzy oficjalne SDK - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - i to, jak powstają z jednego kontraktu OpenAPI.

Można korzystać z API przez surowy curl albo fetch: kontrakt jest prosty, jeden nagłówek X-Api-Key, JSON w obie strony. Ale gdy endpointów jest ponad 761, a treści żądań mają po kilkanaście pól, typowany klient oszczędza godziny: podpowiadanie ścieżek, typy żądań i odpowiedzi, automatyczne ponawianie przy niestabilnej sieci.

Dlatego mamy trzy oficjalne SDK, wygenerowane z jednego kontraktu OpenAPI 3.1.

Okno terminala
# TypeScript / JavaScript
npm install @astroway/sdk
# Python
pip install astroway
# PHP
composer require astroway/sdk

To samo wywołanie horoskopu urodzeniowego w trzech językach.

TypeScript - cienka nakładka na openapi-fetch (~6 KB runtime), z podpowiadaniem ś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 } envelope
console.log(chart.data.houses.ascendant); // 212.0952574979425

Python - synchroniczny Astroway i asynchroniczny AsyncAstroway z identycznym interfejsem, oparte na 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 - na bazie Guzzle 7 i PSR-18:

<?php
use 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'];

Trzy różne języki, ale te same gwarancje, bo wszystkie trzy są generowane z tego samego kontraktu OpenAPI:

  • Typy żądań i odpowiedzi dla wszystkich endpointów. TS daje podpowiadanie ścieżek i typowane treści żądań; Python to typowany pakiet zgodny z PEP 561; PHP ma typowane sygnatury. Pola podpowiada IDE, a nie dokumentacja w sąsiedniej karcie.
  • Wbudowany retry z backoffem dla 408, 409, 429, 5xx. Chwilowa awaria sieci albo rate limit nie wywraca twojego kodu, klient sam ponawia żądanie.
  • Hierarchia błędów w stylu Stainless. Błędy są typowane klasami, a nie są napisem w catch. Łapiesz konkretny typ, np. RateLimitError albo ValidationError, i obsługujesz go punktowo.
  • OpenAPI 3.1 jako źródło. Dodany do API endpoint pojawia się w SDK w następnym wydaniu, bez ręcznego powielania.
  • OIDC + provenance SLSA przy publikacji: TS i PHP przez Trusted Publisher / auto-mirror, Python przez Trusted Publisher OIDC na PyPI. Łańcuch dostaw da się zweryfikować.

Base URL jest wszędzie taki sam, https://api.astroway.info/v1/, a klucz przekazuje się w nagłówku X-Api-Key. To ten sam klucz co przy surowych wywołaniach HTTP; SDK niczego nie zmienia w autoryzacji.

Na bazie trzech podstawowych SDK są gotowe integracje pod konkretne stacki:

  • @astroway/react - hooki dla aplikacji React
  • astroway/sdk-symfony - bundle dla Symfony
  • astroway/sdk-laravel - pakiet dla Laravela

W przygotowaniu, ale jeszcze nieopublikowane: Go, Ruby i Rust. Ich strony są już w katalogu SDK z podglądem polecenia instalacji; gdy pakiet trafi do rejestru, status zmieni się na “dostępny”.

  1. Klucz na dashboard/sign-up - 10 000 kredytów miesięcznie za darmo
  2. Zainstaluj SDK w swoim języku (polecenia powyżej)
  3. Pierwsze wywołanie: horoskop urodzeniowy ze snippetu powyżej, wstaw swój klucz do ASTROWAY_API_KEY

Pełna lista SDK z przykładami dla każdego jest na stronie SDK.

MakSeong · AstroWay

Robię AstroWay API: pakuję Swiss Ephemeris w czysty REST i piszę o nudnych detalach, które naprawdę są ważne.

// zbuduj na tym

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.

Więcej z bloga wszystkie posty →

Ephemeris 2026-07-19

Jak trzymamy dokładność pod kontrolą: CI kontra swetest i NASA

Dokładność astrologicznego API łatwo zepsuć jednym refaktoringiem efemeryd. Opisujemy zabezpieczenia: jeden rdzeń Swiss Ephemeris dla aplikacji i API, setki zamrożonych snapshotów na horoskopach wzorcowych i triangulacja każdego PR względem swetest CGI, Kerykeion, Prokerala i katalogu zaćmień NASA.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.

Engineering 2026-06-05

Horoscope API Tutorial: Build a Daily Horoscope Feature

Add daily, weekly and monthly horoscopes to your app via API - sign-based text vs transit-based personalization - with TypeScript and Python code.