يمكن الوصول إلى الـ API عبر curl أو fetch الخام: فالعقد بسيط، ترويسة واحدة X-Api-Key وJSON ذهابًا وإيابًا. لكن عندما يتجاوز عدد نقاط النهاية 865، وتحتوي أجسام الطلبات على عشرات الحقول، فإن العميل ذا الأنواع يوفّر ساعات: إكمال تلقائي للمسارات، وأنواع للطلب والاستجابة، وإعادة محاولة تلقائية على الشبكات غير المستقرة.
لذلك لدينا ثلاث حزم SDK رسمية مولَّدة من عقد OpenAPI 3.1 واحد.
التثبيت
Section titled “التثبيت”# TypeScript / JavaScriptnpm install @astroway/sdk
# Pythonpip install astroway
# PHPcomposer require astroway/sdkمثال مختصر
Section titled “مثال مختصر”الاستدعاء نفسه لخريطة الميلاد بثلاث لغات.
TypeScript: غلاف رفيع فوق openapi-fetch (نحو 6 KB وقت التشغيل)، مع إكمال تلقائي للمسارات:
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: الصنف المتزامن Astroway وغير المتزامن AsyncAstroway بواجهة متطابقة، فوق 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: فوق Guzzle 7 و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'];القاسم المشترك بين الثلاث
Section titled “القاسم المشترك بين الثلاث”ثلاث لغات مختلفة، لكن الضمانات نفسها، لأن الثلاث مولَّدة من عقد OpenAPI نفسه:
- أنواع الطلب والاستجابة لجميع نقاط النهاية. تمنحك TS إكمالًا تلقائيًا للمسارات وأجسامًا ذات أنواع؛ وPython حزمة typed وفق PEP 561؛ وPHP تواقيع ذات أنواع. بيئة التطوير تقترح الحقول بدل التوثيق في تبويب مجاور.
- إعادة محاولة مدمجة مع backoff عند
408و409و429و5xx. عطل شبكة مؤقت أو rate-limit لا يُسقط كودك: العميل يعيد المحاولة بنفسه. - تسلسل أخطاء بأسلوب Stainless. الأخطاء مصنّفة بأصناف ذات أنواع، لا مجرد نص في
catch. تلتقط نوعًا محددًا مثلRateLimitErrorأوValidationErrorوتعالجه بدقة. - OpenAPI 3.1 مصدرًا. أضفنا نقطة نهاية إلى الـ API، فتظهر في SDK مع الإصدار التالي دون تكرار يدوي.
- OIDC وإثبات منشأ SLSA عند النشر: TS وPHP عبر Trusted Publisher / auto-mirror، وPython عبر Trusted Publisher OIDC على PyPI. سلسلة التوريد قابلة للتحقق.
عنوان Base URL في الجميع هو https://api.astroway.info/v1/، ويُمرَّر المفتاح في الترويسة X-Api-Key. إنه المفتاح نفسه المستخدم لاستدعاءات HTTP الخام؛ SDK لا يغيّر شيئًا في التفويض.
أغلفة أطر العمل وخارطة الطريق
Section titled “أغلفة أطر العمل وخارطة الطريق”فوق حزم SDK الأساسية الثلاث توجد تكاملات جاهزة لبيئات محددة:
@astroway/react: خطافات (hooks) لتطبيقات Reactastroway/sdk-symfony: حزمة bundle لـ Symfonyastroway/sdk-laravel: حزمة لـ Laravel
قيد العمل ولم تُنشر بعد: Go وRuby وRust. صفحاتها موجودة بالفعل في كتالوج SDK مع معاينة لأمر التثبيت؛ وعندما تصدر الحزمة في السجل، تتغير حالتها إلى “متاحة”.
- احصل على مفتاح من dashboard/sign-up: 10 000 رصيد شهريًا مجانًا
- ثبّت SDK بلغتك (الأوامر أعلاه)
- أول استدعاء: خريطة الميلاد من المقتطف أعلاه، ضع مفتاحك في
ASTROWAY_API_KEY
القائمة الكاملة لحزم SDK مع أمثلة لكل منها في صفحة SDK.
مواقع بدقة الثانية القوسية في 4 أسطر من الكود.
مفتاح مجاني بدون بطاقة. 5000 استدعاء شهرياً حتى الدفعة الأولى.