İçeriğe atla

Astrolojiye özgü tuzaklar

Üretilen kodun genellikle yanıldığı noktalarda API'nin gerçekte nasıl davrandığı. Aşağıdaki her madde bir üslup tercihi değil, sunucunun isteği nasıl işlediğidir.

İstekler

  • Sondaki eğik çizgi zorunludur. /api/astro/tithi/ çalışır; /api/astro/tithi ise 301 döndürür ve yönlendirmeyi izleyen istemci isteği gövdesiz bir GET olarak yeniden gönderir.
  • Aynı değerin alan adı endpoint'ten endpoint'e değişir. An neredeyse her yerde date_time, ama /api/astro/chart/ ve varga haritalarında datetime. Saat farkı genellikle timezone_as_float, bazılarında ise timezone, tz ya da time_zone. Ay düğümü rahu, node ya da node_type olarak geçer ve varsayılanları farklıdır. Tek bir gövdeyi her yerde kullanmak yerine her gövdeyi o endpoint'in alan listesine göre kurun.
  • Boylam Greenwich'in batısında, enlem ekvatorun güneyinde negatiftir. New York 74.006 değil, -74.006.
  • Enlem sınırları farklıdır: harita ve panchang endpoint'lerinin çoğu ±89.9'a kadar, Ashtamangala ve Jamakkol Prashna endpoint'leri ±66'ya kadar kabul eder. Endpoint'in aralığı dışındaki bir değer 400 ile reddedilir.

Yine de 200 döndüren hatalı girdiler

  • Saat farkı olmayan bir date_time, o yerin yerel saati olarak okunmaz: endpoint'lerin çoğu onu UTC+05:30, birkaçı UTC olarak alır. Yanıt normal bir 200'dür ama başka bir an içindir; bazen bir önceki gün için. Her zaman saat farkı ya da Z gönderin.
  • timezone_as_float, date_time içindeki saat farkıyla karşılaştırılmaz. İkisi uyuşmazsa yanlış an için bir 200 alırsınız. Bugünün değil, o tarihte geçerli olan saat farkını (yaz saati dahil) kullanın; /api/astro/date_time/ bunu koordinatlardan bulur.
  • Birkaç alan hata vermek yerine varsayılana döner: /api/astro/chart/ üzerinde start ya da end dışındaki her ascendant_pos ev başlangıcı anlamına gelir; /api/astro/festival/ üzerinde poornima dışındaki her moon_option amavas gibi davranır. Buradaki bir yazım hatası, hata vermeden yanıtı değiştirir.

Anahtarlar

  • Anahtar tablosu olan bir endpoint'te, tabloda olmayan bir anahtar isteğin tamamını 400 ile reddettirir ve mesaj tanınmayan anahtarları adıyla belirtir. Hiçbir şey hesaplanmaz ve ücret alınmaz.
  • Anahtar adları birebir yazılmalıdır ve bazen şaşırtıcıdır: /api/astro/panchanga/ günün yogası için yogam, ayrıca rahu_kaalam ve calcualte_special_tithi (yazımı böyle) kullanır. Tahmin etmek yerine anahtar tablosundan kopyalayın.
  • Ek alan gerektiren bir anahtar, o alan eksikse 400 ile başarısız olur. Örneğin /api/astro/numerology/ üzerinde phone_number değeri olmadan gönderilen phone_number anahtarı.
  • Başarılı bir çağrı, kaç anahtar isterse istesin bir kredi tutar. Her anahtar için ayrı çağrı yapmak yerine ihtiyacınız olan her şeyi tek çağrıda isteyin: tithi, vaara, yogam ve karana birlikte.
  • /api/astro/tithi/ ve /api/astro/rahu-kaal/ gibi tek amaçlı endpoint'lerin anahtar tablosu yoktur: her zaman aynı sabit seti döndürürler ve bunlara gönderilen keys dizisi kullanılmaz.
  • /api/astro/numerology/ üzerinde geçerli anahtarlar system değerine bağlıdır. Başka bir sistemin setinden gelen anahtar, adını belirten bir 400 döndürür.

Krediler, hatalar ve sınırlar

  • Endpoint'lerin çoğu başarılı çağrı başına bir kredidir. /api/astro/chat/, /api/astro/pdf/horoscope/ ve /api/astro/pdf/yearbook/ her biri 25 kredidir; bunları döngülerin ve yeniden denemelerin dışında tutun.
  • Başarısız çağrılar ücretsizdir: krediler hesaplamadan önce ayrılır ve 2xx dışındaki her yanıtta iade edilir; bu yanıtlar X-Credits-Charged: 0 taşır.
  • Ücretlendirilen yanıtlar X-Credits-Cost, X-Credits-Charged ve X-Credits-Remaining başlıklarını, ayrıca dakikalık X-RateLimit-Limit ve X-RateLimit-Remaining başlıklarını taşır. Bakiyeyi kendiniz takip etmek yerine bunları okuyun.
  • Kredi bittiğinde message değeri insufficient_credits olan bir 402 döner; data içinde cost_credits, credits_remaining ve recharge_url bulunur. Plan yükseltilene ya da kotası sıfırlanana kadar yeniden denemek işe yaramaz.
  • Dakikalık sınır aşıldığında message değeri api_key_rate_limited olan bir 429 ve bir Retry-After başlığı döner (aynı değer data içinde retry_after_seconds olarak da bulunur). Yeniden denemeden önce o kadar bekleyin.
  • Hatalı biçimli, iptal edilmiş ya da süresi dolmuş bir anahtar 401 invalid_api_key döndürür. Anahtarınızın kullanamayacağı bir yol, kapsam ya da IP adresi ise 403 endpoint_not_allowed, scope_not_allowed ya da ip_not_allowed döndürür.
  • Anahtar ve kredi kontrollerinden gelen hatalar { "error": "…", "message": "insufficient_credits", "is_error": true, "data": { … } } biçimindedir: message içindeki koda göre dallanın. Hesaplama yanıtları başarısızlıkta { "data": {}, "status": 400, "is_error": true, "message": "…" } yapısını kullanır ve nedeni message içinde metin olarak verir. İkisi de is_error taşır.
  • İki PDF endpoint'i JSON değil, PDF'nin kendisini (application/pdf) döndürür. Gövdeyi bir dosyaya yazın; sonradan indirilecek bir bağlantı yoktur.

Astroloji

  • Vedik endpoint'ler sidereal'dır ve ayanamsa düzeltmesini sunucuda yapar; /api/astro/western/ yolları varsayılan olarak tropikaldir. Çıktıdan kendiniz ayanamsa çıkarmayın.
  • /api/astro/kp-chart/, sidereal zodyakta Placidus ev başlangıçlarını kullanır; bu yüzden aynı doğum için ev yerleşimleri /api/astro/chart/ sonucundan farklı olabilir. Bu bir tutarsızlık değil, KP yönteminin kendisidir.
  • Rashifal, doğum haritası kullanmayan, burca dayalı bir öngörüdür: doğum verisi değil, leo gibi İngilizce bir burç adıyla rashi gönderin.
  • seed göndermediğiniz sürece tarot çekilişleri rastgeledir. Her yanıt kullandığı seed değerini döndürür; bir okumanın birebir yeniden gösterilmesi gerekiyorsa bu değeri saklayın.
  • /api/astro/numerology/iching/, bir tarihi ve bir adı sayısal olarak 64 heksagramdan birine eşler. Gerçek bir atış yapılmaz; bu yüzden değişen çizgi ve ikinci heksagram yoktur.

Sonraki