Ọjọ́ 0
Ṣàfihàn ìyàtọ̀ (Prove access)
Ṣẹ̀dá kii, parí ìbéèrè kan tí a ti fọwọ́ sí, kí o sì tọ́jú ìdáhùn àkọ́kọ́ pẹ̀lú metadata rẹ̀.
Ṣí ìgbésẹ̀ →ìtọ́sọ́nà iṣẹ́ (workflow guide) API
Yan àbájáde tí ó súnmọ́ iṣẹ́ rẹ jùlọ. Ọ̀nà kọ̀ọ̀kan ń fún ọ ní ìbéèrè iṣẹ́ kan, ohun tí ìdáhùn náà gbọ́dọ̀ ní, bí o ṣe lè ṣàyẹ̀wò pé ó ṣiṣẹ́, àti ìgbésẹ̀ tókàn tí ó ṣe pàtàkì.
Àwọn ọ̀nà márùn-ún tó ṣe kedere
Selected: Harden a client
Àyè ìdánwò API rẹ ti 14 ọjọ́
Ète náà kì í ṣe láti bẹ ọjọ́-ojú-iṣẹ́ gbogbo. Ó jẹ́ láti parí iṣẹ́ API tí ó ní ìwẹ̀nùmọ́ tó ṣe kedere, padà wá ní ọjọ́ mìíràn, kí o sì jáde pẹ̀lú àkọsílẹ̀ data tabi ìlànà iṣẹ́ tí a lè ṣe nígbà gbogbo.
Ọjọ́ 0
Ṣẹ̀dá kii, parí ìbéèrè kan tí a ti fọwọ́ sí, kí o sì tọ́jú ìdáhùn àkọ́kọ́ pẹ̀lú metadata rẹ̀.
Ṣí ìgbésẹ̀ →Ọjọ́ 1-2
Yanjú ìṣòro ìwẹ̀nùmọ́ (authentication) tabi sẹ́ńtọ́, kí o sì sọ script àkọ́kọ́ di iṣẹ́ tí a lè ṣe nígbà gbogbo tí ó ní orúkọ.
Ṣí ìgbésẹ̀ →Ọjọ́ 3-4
Lo kalẹ́ńdà gẹ́gẹ́ bí ẹgbẹ́ endpoint kejì kí o sì ṣètò ìgbà tó bá yẹ fún iṣẹ́ API tó ń bọ̀.
Ṣí ìgbésẹ̀ →Ọjọ́ 5-7
Fi àwọn ìrètí tàbí ẹgbẹ́ kékeré ti macro series kún un, lẹ́yìn náà ṣẹ̀dá ìdánilẹ́ko àti tábì scorecard kan tí a ti tọ́jú.
Ṣí ìgbésẹ̀ →Ọjọ́ 8-10
Yan REST, SSE, tàbí webhooks tí a ṣètò, kí o sì parí ìgbésẹ̀ API mìíràn ní ọjọ́ mìíràn.
Ṣí ìgbésẹ̀ →Ọjọ́ 11-13
Fi àwọn timeout, àwọn ìdánwò rírorò (bounded retries), ìdánwò ìdáhùn, logging tí ó wà ní ààbò fún credential, àti ìṣọ́ data tó ti kọjá kún un.
Ṣí ìgbésẹ̀ →Ọjọ́ 14
Fìdí rẹ̀ múlẹ̀ pé API ń pèsè iṣẹ́ tó lè ṣe nílọ́ọ̀kan tí ẹgbẹ́ rẹ yóò tọ́jú, lẹ́yìn náà yan àwọn data tuntun tàbí iṣẹ́ ìlànà tuntun.
Ṣí ìgbésẹ̀ →Production readiness
Production reliability comes from treating status codes differently, keeping retries bounded, reusing ETags, and choosing scheduled REST, SSE, or webhooks for the job.
Àpẹẹrẹ tó ń ṣiṣẹ́
Tọ́jú kẹ́ẹ̀kùú rẹ nínú FXMD_API_KEY; má ṣe fi sínú ìṣọ́ ìsọfúnni (source control).
import os
import requests
from urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(total=3, backoff_factor=0.5, status_forcelist=(429, 502, 503, 504))
session.mount("https://", requests.adapters.HTTPAdapter(max_retries=retry))
response = session.get(
"https://api.fxmacrodata.com/v1/announcements/eur/inflation",
params={"api_key": os.environ["FXMD_API_KEY"], "limit": 5},
headers={"Accept-Encoding": "gzip"},
timeout=(3.05, 20),
)
response.raise_for_status()
Àbájáde tó wà lọ́wọ́: A bounded client that handles transient failures without retry storms and is ready to add ETag-based conditional refreshes.
Nígbà tí script àkọ́kọ́ bá di eto gidi
Lo àwọn ìtọ́sọ́nà wọ̀nyí nígbà tí ìdáhùn bá kùnà, tí kò bá mú data wá, tàbí tí ó bá nílò ìṣàkóso iṣẹ́ bíi caching, timeouts, retries, àti ìfúni ní ìsọfúnni.
| Ìtọ́sọ́nà | Lo rẹ̀ nígbà tí | Bẹ̀rẹ̀ |
|---|---|---|
| Ṣàyẹ̀wò ìdáhùn tí kò ṣiṣẹ́ tàbí èyí tí kò ní nǹkan | Yanjú ìṣòro ìwẹ̀nùmọ́, ìyàgbà, ọ̀nà, ìlimitẹ̀ iṣẹ́, ati ìwàstí data láìfi kẹ́ẹ̀kùú rẹ hàn. | Ṣí ìtọ́sọ́nà → |
| Sọ API client di èyí tí ó ṣe tán fún iṣẹ́ (production-ready) | Fi àwọn timeout, àwọn ìdapọ̀ ìdánwò (bounded retries), caching, àwọn ìbéèrè tí ó ní àwọ̀n (conditional requests), àti ọ̀nà ìfúnni tó tọ̀nà kún un. | Ṣí ìtọ́sọ́nà → |