FlutterFlow
FlutterFlow compilează o aplicație pe care utilizatorul tău o ține în mână, așa că întrebarea nu este ce câmpuri să completezi, ci unde va ajunge cheia. Cererea de mai jos este trimisă în producție exact așa cum este construită de apel; pașii din FlutterFlow sunt scriși conform documentației FlutterFlow la data de 2026-09-17.
Mai întâi, creează o cheie, așa cum este descris în secțiunea Cheie pentru automatizare, cu domeniul de aplicare chart.
1. Creează apelul
Section titled “1. Creează apelul”Deschide API Calls, apasă + Add, selectează Create API Call și completează:
-
API Call Name:
Natal chart. -
Method Type:
POST. -
URL:
https://api.astroway.info/v1/chart -
Tab-ul Headers, + Add Header: un rând
X-Api-Key:și apoi cheia ta. Al doilea rândContent-Type: application/json. -
Tab-ul Variables: cinci variabile de tip String,
date,time,timezone,latitude,longitude, fiecare cu o valoare tipică din JSON-ul de mai jos. -
Tab-ul Body, în lista derulantă JSON: inserează JSON-ul și trage variabilele în el.
{ "date": "1990-05-15", "time": "14:30:00", "timezone": "Europe/Kyiv", "latitude": "50.45", "longitude": "30.52"}Latitudinea și longitudinea rămân șiruri de caractere intenționat: API-ul acceptă "50.45" ca număr, iar un șir de caractere simplifică tragerea variabilelor.
Apasă Add Call, deschide Response & Test, apasă Test API Call și vezi răspunsul în Test Response. data.input.timezoneOffset este returnat ca 4: exact această diferență de fus orar o avea Kievul la acea dată.
2. Fă apelul privat
Section titled “2. Fă apelul privat”În Advanced Settings ale apelului, activează Make Private, apasă Save, apoi Deploy APIs. Acum apelul este executat într-o Firebase Cloud Function, deci proiectul are nevoie de un Firebase conectat și de un plan Firebase cu Cloud Functions.
Încă două lucruri pe care documentația FlutterFlow le menționează direct: cheia transmisă din frontend, de exemplu prin remote config, rămâne deschisă chiar și într-un apel privat, iar forma sigură este un antet scris în apelul în sine.
3. Citește răspunsul
Section titled “3. Citește răspunsul”În JSON Paths, apasă + Add JSON Path și dă fiecăruia un nume:
| Nume | JSON Path |
|---|---|
ascendant | $.data.houses.ascendant |
sunLongitude | $.data.planets[0].longitude |
moonLongitude | $.data.planets[1].longitude |
offsetUsed | $.data.input.timezoneOffset |
Semnul este longitudinea împărțită la 30 și rotunjită în jos, ca un index într-o listă de douăsprezece nume: de exemplu, Ascendentul 159.26 dă 5, adică Fecioara. Este suficientă o funcție personalizată de patru rânduri sau o listă de douăsprezece rânduri și un index.
Build-ul web nu ne poate accesa din browser
Section titled “Build-ul web nu ne poate accesa din browser”Măsurat la 2026-09-17 de pe o pagină de pe un domeniu terț: POST /v1/chart răspunde la preflight fără antetul access-control-allow-origin, iar Chrome blochează cererea. Doar /v1/public/* și /v1/embed/* răspund browserului de pe un domeniu străin.
FlutterFlow efectuează apeluri prin propriul proxy în constructor, în Run mode și Test mode, așa că un apel care funcționează acolo poate eșua după publicarea aplicației web. Două soluții, și pe prima o recomandăm:
- Fă apelul privat, ca mai sus. Atunci este executat într-o Cloud Function, nu în browser, și asta rezolvă imediat atât problema cheii, cât și problema CORS.
- Pune un backend propriu în fața noastră, dacă îl ai deja. Setările proxy în FlutterFlow, împreună cu propriul URL de proxy, sunt documentate pentru constructor și modurile Run și Test; documentația nu spune nimic despre un build web publicat, așa că nu ar trebui să te bazezi pe ele acolo.
Cheia publică pk_ nu rezolvă asta: ea accesează doar /v1/public/* și /v1/embed/*, iar din build-urile pentru iOS și Android este respinsă complet, deoarece acestea nu trimit un web-origin.
401la un apel privat: cheia se află pe grup, nu pe apel.400 INVALID_FIELDcutimezoneîndetails: zona este goală, este o abreviere precumESTsau nu este un nume de zonă.400cudatesautimeîndetails: formatul nu esteYYYY-MM-DD/HH:MM:SS.403 ENDPOINT_NOT_IN_SCOPE: domeniul de aplicare al cheii nu includechart.429 KEY_BUDGET_EXHAUSTED: cheia și-a epuizat bugetul; mărește-l în tabloul de bord.