API τρίτων (b77.http)
Κάλεσε οποιοδήποτε HTTPS API με τα μυστικά κλειδιά σου, χωρίς να τα εκθέσεις.
Το b77.http.fetch καλεί ένα HTTPS API τρίτου από τους servers του builder77. Τα κλειδιά API σου αποθηκεύονται στις Ρυθμίσεις → Μυστικά κλειδιά και γράφονται στον κώδικα ως {{secret:NAME}}: ο server τα συμπληρώνει, οπότε δεν φτάνουν ποτέ στον browser.
const res = await b77.http.fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST', // default GET
headers: { Authorization: 'Bearer {{secret:OPENAI_API_KEY}}' },
body: { model: 'gpt-4o-mini', messages: [{ role: 'user', content: 'Hi!' }] }, // object → JSON, or a string
});
if (res.ok) console.log(res.data); // { ok, status, headers, body (text), data (parsed JSON or null) }Κάθε κλήση χρησιμοποιεί 1 credit ενσωματώσεων. Μόνο https, χρονικό όριο 15 δευτερολέπτων, απαντήσεις έως 1 MB. Αν ένα API επιστρέψει το κλειδί σου, αυτό αντικαθίσταται με [secret] πριν η εφαρμογή σου δει την απάντηση.
Κανόνες για κάθε μυστικό κλειδί
Όποιος χρησιμοποιεί την εφαρμογή σου μπορεί να κάνει κλήσεις με ένα μυστικό κλειδί — χωρίς να το βλέπει. Γι' αυτό κάθε κλειδί λειτουργεί μόνο όπως επιτρέπεις:
- Επιτρεπόμενοι hosts — οι μόνοι servers στους οποίους στέλνεται ποτέ (π.χ.
api.openai.com· το*.example.comκαλύπτει και τα subdomains). - Επιτρεπόμενες μέθοδοι — από προεπιλογή GET και POST.
- Επιτρεπόμενες διαδρομές — προαιρετικά προθέματα διαδρομής, όπως
/v1/chat/. Κενό σημαίνει οποιαδήποτε διαδρομή. - Πού μπορεί να μπει το κλειδί — από προεπιλογή μόνο σε κεφαλίδα ταυτοποίησης (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key και παρόμοιες). Οι παράμετροι ερωτήματος (με βάση το όνομα, π.χ.
key), η διαδρομή του URL και το σώμα του αιτήματος είναι απενεργοποιημένα μέχρι να τα ενεργοποιήσεις.
Μια κλήση που παραβιάζει κανόνα απορρίπτεται με status 403 πριν σταλεί οτιδήποτε.
Κλειδιά στο URL ή στο σώμα
Προτίμησε API που δέχονται το κλειδί σε κεφαλίδα. Κάποια το βάζουν αντίθετα στη διεύθυνση — επίτρεψε ακριβώς εκείνο το σημείο και περιόρισε τη διαδρομή:
// Settings → Secrets: TELEGRAM_TOKEN, host api.telegram.org, "In the URL path" on,
// allowed path /bot{{secret:TELEGRAM_TOKEN}}/sendMessage
await b77.http.fetch('https://api.telegram.org/bot{{secret:TELEGRAM_TOKEN}}/sendMessage', {
method: 'POST',
body: { chat_id: 12345, text: 'New booking!' },
});Επίτρεψε το Στο σώμα του αιτήματος μόνο αν το απαιτεί το API: τότε όποιος χρησιμοποιεί την εφαρμογή σου θα μπορούσε να γράψει το κλειδί σε οτιδήποτε αποθηκεύει αυτό το API (ένα μήνυμα, μια σημείωση, ένα δημόσιο αρχείο) και να το διαβάσει ξανά.