Você pode acessar a API usando curl ou fetch, um contrato simples, um único cabeçalho X-Api-Key, JSON para lá e para cá. Mas quando há mais de 758 endpoints e os corpos das solicitações têm uma dúzia de campos, um cliente tipizado economiza horas: auto-completar caminhos, tipos de solicitação e resposta, e repetir automaticamente em uma rede instável.
Por isso, temos três SDK oficiais, gerados a partir do mesmo contrato OpenAPI 3.1.
Instalação
Seção intitulada “Instalação”# TypeScript / JavaScriptnpm install @astroway/sdk
# Pythonpip install astroway
# PHPcomposer require astroway/sdkExemplo mínimo
Seção intitulada “Exemplo mínimo”O mesmo chamado para a carta nativa em três idiomas.
TypeScript - uma camada fina sobre openapi-fetch (~6 KB rantom), com auto-completar caminhos:
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 - síncrono Astroway e assíncrono AsyncAstroway com a mesma superfície, sobre 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 - sobre Guzzle 7 e 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'];O que eles têm em comum
Seção intitulada “O que eles têm em comum”Três idiomas diferentes, mas garantias idênticas - pois todos geram a partir do mesmo contrato OpenAPI:
- Tipos de solicitação e resposta para todos os endpoints. TS oferece auto-completar caminhos e corpos tipizados; Python - PEP 561 pacote tipado; PHP - assinaturas tipadas. O IDE sugere campos, e não a documentação na janela adjacente.
- Repetição com backoff em
408,409,429,5xx. Um temporário erro de rede ou limite de taxa não faz com que o seu código falhe - o cliente se repete sozinho. - Hierarquia de erros Stainless-style. Erros tipados por classe, e não uma linha em
catch. Você captura o tipo específico -RateLimitError,ValidationError- e processa com precisão. - OpenAPI 3.1 como fonte. Adicione um endpoint ao API - ele aparece no SDK no próximo lançamento, sem duplicar manualmente.
- OIDC + SLSA-provenance em publicações: TS e PHP - através do Publicador Confiança / auto-mirror, Python - Publicador Confiança OIDC no PyPI. O fluxo de fornecimento é verificado.
A URL base em todos é https://api.astroway.info/v1/, e a chave é passada como cabeçalho X-Api-Key. O mesmo chave que para os chamados HTTP diretos; o SDK não altera a autenticação.
Frameworks de camadas e mapa de rota
Seção intitulada “Frameworks de camadas e mapa de rota”Acima das três SDK básicas, há integrações prontas para stacks específicos:
@astroway/react- hooks para aplicativos Reactastroway/sdk-symfony- pacote para Symfonyastroway/sdk-laravel- pacote para Laravel
Em desenvolvimento, mas ainda não publicados - Go, Ruby e Rust. Suas páginas já estão no catálogo SDK com a instalação prévia; quando o pacote é lançado no registro, o status muda para “disponível”.
Começar
Seção intitulada “Começar”- Chave em dashboard/sign-up - 10 000 créditos por mês sem custo
- Instale o SDK em sua linguagem (comandos acima)
- O primeiro chamado - a carta nativa com o snippet acima, substitua sua chave em
ASTROWAY_API_KEY
O lista completa de SDK com exemplos para cada - na página SDK.
O mesmo Swiss Ephemeris que no Solar Fire - em 4 linhas de código.
Chave gratuita sem cartão. 5 000 chamadas por mês até o primeiro pagamento.