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

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

Surowy HTTP działa, ale typizowany klient oszczędza godziny: autouzupełnianie ścieżek, typy zapytań i odpowiedzi, wbudowany retry dla 408/409/429/5xx i hierarchia błędów w stylu Stainless. Przeanalizowaliśmy trzy oficjalne SDK - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - i czym są generowane z jednego kontraktu OpenAPI.

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.

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

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 } envelope
console.log(chart.data.houses.ascendant); // 212.0952574979425

Python - 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:

<?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 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.

Powyżej trzech podstawowych SDK są gotowe integracje pod konkretny stack:

  • @astroway/react - huki dla React-zastosunków
  • astroway/sdk-symfony - pakiet dla Symfony
  • astroway/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”.

  1. Klucz na dashboard/sign-up - 10 000 kredytów na miesiąc bezpłatnie
  2. Zainstaluj SDK w swoim języku (komendy powyżej)
  3. 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.

MakSeong · AstroWay

I build the AstroWay API: Swiss Ephemeris on a clean REST surface, and I write about the dull parts that turn out to matter.

// 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 utrzymujemy dokładność pod kontrolą: CI przeciw swetest i NASA

Dokładność w astro-API łatwo degraduje od jednego refactoringu ephemerid. Rozmawiamy o ochronie: jedno jądro Swiss Ephemeris na przeglądarce i serwer, setki zamrożonych snapshotów na etalonicznych mapach i triangulacja każdego PR przeciw swetest CGI, Kerykeion, Prokerala oraz katalogu zaciemnień 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.