Külső API-k (b77.http)
Hívj meg bármilyen HTTPS API-t a titkos kulcsaiddal, anélkül hogy felfednéd őket.
A b77.http.fetch a builder77 szervereiről hív meg egy külső HTTPS API-t. Az API-kulcsaidat a Beállítások → Titkos kulcsok részben adhatod meg, a kódban pedig {{secret:NAME}} formában hivatkozol rájuk: a szerver helyettesíti be őket, így sosem jutnak el a böngészőbe.
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) }Minden hívás 1 integrációs kreditet használ. Csak https, 15 másodperces időkorlát, legfeljebb 1 MB-os válaszok. Ha egy API visszaküldi a kulcsodat, a helyére [secret] kerül, mielőtt az alkalmazásod megkapja a választ.
Szabályok titkos kulcsonként
Az alkalmazásod bármely felhasználója indíthat hívásokat egy titkos kulccsal – anélkül, hogy látná. Ezért minden kulcs csak úgy működik, ahogy engedélyezed:
- Engedélyezett hosztok – az egyetlen szerverek, ahová a kulcs valaha eljut (pl.
api.openai.com; a*.example.comaz aldomaineket is lefedi). - Engedélyezett metódusok – alapértelmezés szerint GET és POST.
- Engedélyezett útvonalak – nem kötelező útvonal-előtagok, például
/v1/chat/. Ha üres, bármely útvonal megengedett. - Hová kerülhet a kulcs – alapértelmezés szerint csak hitelesítési fejlécbe (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key és hasonlók). A lekérdezési paraméterek (név szerint, pl.
key), az URL útvonala és a kérés törzse ki van kapcsolva, amíg be nem kapcsolod őket.
A szabályt sértő hívást 403-as állapotkóddal elutasítjuk, mielőtt bármi elmenne.
Kulcsok az URL-ben vagy a törzsben
Lehetőleg olyan API-t válassz, amely fejlécben várja a kulcsot. Némelyik inkább a címben – ilyenkor pontosan azt a helyet engedélyezd, és szűkítsd az útvonalat:
// 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!' },
});A kérés törzsében beállítást csak akkor kapcsold be, ha az API megköveteli: így bárki, aki az alkalmazásodat használja, beírhatná a kulcsot bármibe, amit az API ment (üzenetbe, jegyzetbe, nyilvános fájlba), majd visszaolvashatná.