Μορφές πεδίων
Ένα μοντέλο που μαντεύει το όνομα ενός πεδίου λαμβάνει είτε 400, είτε, ακόμα χειρότερα, μια σίγουρη απάντηση για έναν διαφορετικό χάρτη. Παρακάτω είναι το ακριβές συμβόλαιο.
Σώμα αιτήματος χάρτη
Ενότητα με τίτλο «Σώμα αιτήματος χάρτη»| Πεδίο | Τύπος και μορφή | Απαιτούμενο |
|---|---|---|
date | YYYY-MM-DD, και πρέπει να είναι μια πραγματική ημερομηνία ημερολογίου | ναι |
time | HH:mm:ss | ναι, ή timeUnknown: true |
timezoneOffset | αριθμός, ώρες από UTC, π.χ. 5.75 | όχι, προεπιλογή 0 (UTC) |
timezone | όνομα ζώνης IANA, π.χ. Europe/Kyiv, ή auto | όχι, και όταν σταλεί, αντικαθιστά το timezoneOffset |
latitude | δεκαδικοί βαθμοί, βόρεια θετικά | ναι |
longitude | δεκαδικοί βαθμοί, ανατολικά θετικά | ναι |
houseSystem | ένα γράμμα, προεπιλογή P | όχι |
city | συμβολοσειρά, μόνο για ετικέτα | όχι |
zodiacType | tropical ή sidereal | όχι |
Οι συντομογραφίες απορρίπτονται
Ενότητα με τίτλο «Οι συντομογραφίες απορρίπτονται»Τα lat, lon, lng, long, tz, tzOffset, utcOffset, gmtOffset, timeZone, time_zone επιστρέφουν 400 INVALID_FIELD με το όνομα του σωστού πεδίου:
{ "error": { "code": "INVALID_FIELD", "message": "Unsupported field \"tz\". Rename it to \"timezoneOffset\" (numeric hours from UTC, e.g. 5.75; a zone name goes in timezone)." } }Η πεζή/κεφαλαία γραφή και οι διαχωριστές δεν έχουν σημασία: τα TZ_Offset και tzoffset απορρίπτονται με τον ίδιο τρόπο. Όλα τα πεδία που βρέθηκαν αναφέρονται αμέσως, όχι μόνο το πρώτο, ώστε να μπορείς να τα διορθώσεις όλα με μία κίνηση.
Ο λόγος είναι αυστηρός: πριν από αυτόν τον έλεγχο, ένα πεδίο που δεν διάβαζε το API έδινε σιωπηλά μια μετατόπιση 0, και η απάντηση ήταν ένας σίγουρος χάρτης για UTC. Τρεις ώρες μετατόπισης είναι περίπου 45° του ωροσκόπου, δηλαδή ένα διαφορετικό ανατέλλον ζώδιο, και καμία προειδοποίηση.
timezone: όνομα ζώνης αντί για μετατόπιση
Ενότητα με τίτλο «timezone: όνομα ζώνης αντί για μετατόπιση»Η μετατόπιση πρέπει να είναι αυτή που είχαν τα ρολόγια ακριβώς εκείνη την ημερομηνία, και είναι εύκολο να την καθορίσεις λανθασμένα χειροκίνητα: το Κίεβο τον Μάιο του 1990 ζούσε με τη θερινή ώρα της Μόσχας, UTC+4, όχι +3. Στείλε το timezone, και ο διακομιστής θα λάβει τη μετατόπιση από τη βάση δεδομένων ζωνών ώρας, μαζί με τη θερινή ώρα.
{ "date": "1990-05-15", "time": "14:30:00", "timezone": "Europe/Kyiv", "latitude": 50.45, "longitude": 30.52 }- Το
autoκαθορίζει τη ζώνη με βάση τοlatitudeκαι τοlongitude. Κοντά στα σύνορα, το όνομα είναι πιο ακριβές. - Εάν το
timezoneκαι τοtimezoneOffsetσταλούν μαζί, τοtimezoneυπερισχύει. Τοinput.timezoneOffsetστην απάντηση δείχνει τη μετατόπιση που χρησιμοποιήθηκε. - Η ώρα που υπήρξε δύο φορές (όταν τα ρολόγια πήγαν πίσω) λαμβάνεται την πρώτη φορά. Η ώρα που δεν υπήρξε (όταν τα ρολόγια πήγαν μπροστά) λαμβάνει τη μετατόπιση που ίσχυε πριν από την αλλαγή.
- Χωρίς
time(μόνο ημερομηνία ήtimeUnknown: true) η ζώνη διαβάζεται για το τοπικό μεσημέρι. - Απορρίπτονται με
400 INVALID_FIELD: κενή τιμή, συντομογραφίες όπωςESTήPST, μετατόπιση γραμμένη ως κείμενο, όπως+03:00, ονόματα που δεν υπάρχουν στη βάση δεδομένων, καιautoχωρίς συντεταγμένες. ΤαUTCκαιGMTγίνονται δεκτά. - Κάθε αντικείμενο αναλύεται ξεχωριστά, οπότε το
chart1και τοchart2μπορούν να βρίσκονται σε διαφορετικές ζώνες.
houseSystem: γράμμα, όχι όνομα
Ενότητα με τίτλο «houseSystem: γράμμα, όχι όνομα»Γίνονται δεκτοί ακριβώς αυτοί οι 25 μονογράμματοι κωδικοί (οι ίδιοι με το swetest):
P K R C E W B M O A T V D F G H I i L N Q S U X Y
Η πεζή/κεφαλαία γραφή έχει σημασία: το I είναι Sunshine κατά Makransky, το i κατά Trindl. Το όνομα του συστήματος ("Placidus", "Koch") επιστρέφει 400. Παλαιότερα λειτουργούσε τυχαία, επειδή η μηχανή διαβάζει μόνο το πρώτο γράμμα από τη συμβολοσειρά, και για τον ίδιο λόγο το "Zodiac" έδινε σιωπηλά Placidus.
Άγνωστη ώρα γέννησης
Ενότητα με τίτλο «Άγνωστη ώρα γέννησης»Αντί για ένα φανταστικό μεσημέρι, στείλε timeUnknown: true και μην στείλεις time. Τότε τα houses, houseAspects, chartSect και siderealTime θα είναι null, αντί για φανταστικά. Λεπτομέρειες: Συμβάσεις API.
Οι άγνωστοι κλειδιά δεν απορρίπτονται
Ενότητα με τίτλο «Οι άγνωστοι κλειδιά δεν απορρίπτονται»Το σώμα δέχεται επιπλέον πεδία σιωπηλά: ένα άγνωστο κλειδί απλά αγνοείται. Επομένως, ένα λάθος στο όνομα ενός πεδίου που δεν περιλαμβάνεται στην παραπάνω λίστα απορρίψεων δεν θα γίνει αντιληπτό. Συμβουλέψου την προδιαγραφή: /v1/openapi.json.