API को सीधे curl या fetch से बुलाया जा सकता है - कॉन्ट्रैक्ट सरल है, एक हेडर X-Api-Key, JSON भेजा और प्राप्त किया जाता है। लेकिन जब एन्डपॉइंट्स 758 से अधिक हो जाते हैं, और रिक्वेस्ट बॉडी में दहाड़ों फ़ील्ड होते हैं, तो टाइप्ड क्लाइंट घंटों बचाता है: पाथ का ऑटोकम्प्लीशन, रिक्वेस्ट और रिस्पॉन्स टाइप, अस्थिर नेटवर्क पर ऑटो रीट्राई।
इसलिए हमारे पास तीन आधिकारिक 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 - PEP 561 टाइप्ड पैकेज; PHP - टाइप्ड सिग्नेचर। IDE फ़ील्ड सुझाता है, डॉक्यूमेंटेशन नहीं पड़ती पड़ोसी टैब में।
- बिल्ट‑इन रिट्राई बैकऑफ़ के साथ
408,409,429,5xxपर। अस्थायी नेटवर्क फेल या रेट‑लिमिट तुम्हारा कोड नहीं तोड़ता - क्लाइंट खुद दोबारा कोशिश करता है। - Stainless‑स्टाइल एरर हायरार्की। एरर क्लास द्वारा टाइप्ड होते हैं, स्ट्रिंग नहीं
catchमें। तू विशिष्ट टाइप पकड़ता है -RateLimitError,ValidationError- और उसे विशेष रूप से हैंडल करता है। - OpenAPI 3.1 स्रोत के रूप में। API में एन्डपॉइंट जोड़ो - वह अगले रिलीज़ में SDK में दिखता है, मैन्युअल डुप्लिकेशन की जरूरत नहीं।
- OIDC + SLSA‑प्रोवेनेंस रिलीज़ पर: TS और PHP - Trusted Publisher / auto‑mirror के ज़रिए, Python - PyPI पर Trusted Publisher OIDC। सप्लाई चेन वेरिफ़ाइबल है।
सभी में Base URL - https://api.astroway.info/v1/, की X-Api-Key हेडर से पास होती है। वही की, जो रॉ HTTP कॉल्स में इस्तेमाल होती है; SDK ऑथेंटिकेशन में कुछ नहीं बदलता।
फ्रेमवर्क रैपर और रोडमैप
Section titled “फ्रेमवर्क रैपर और रोडमैप”तीन बेस SDK के ऊपर विशिष्ट स्टैक के लिए तैयार इंटीग्रेशन हैं:
@astroway/react- React एप्लिकेशन्स के लिए हुकastroway/sdk-symfony- Symfony के लिए बंडलastroway/sdk-laravel- Laravel के लिए पैकेज
विकास में हैं, लेकिन अभी प्रकाशित नहीं - Go, Ruby और Rust। उनके पेज SDK कैटलॉग में पहले से हैं, इंस्टॉल कमांड का प्रीव्यू के साथ; जब पैकेज रेजिस्ट्री में आता है, स्टेटस «उपलब्ध» में बदल जाता है।
शुरू करो
Section titled “शुरू करो”- की dashboard/sign-up पर - महीने में 10 000 क्रेडिट मुफ्त
- ऊपर दिए कमांड से अपनी भाषा में SDK इंस्टॉल करो
- पहला कॉल - ऊपर के स्निपेट से नेटल कार्ड, अपना की
ASTROWAY_API_KEYमें डालो
पूरा SDK सूची और प्रत्येक के उदाहरण पेज पर देखें SDK.
वही Swiss Ephemeris जो Solar Fire में है - बस 4 लाइनों के कोड में।
कार्ड के बिना मुफ्त कुंजी। पहले भुगतान तक 5,000 कॉल प्रति माह।