API třetích stran (b77.http)
Volej libovolné HTTPS API se svými tajnými klíči, aniž bys je prozradil.
b77.http.fetch volá HTTPS API třetí strany ze serverů builder77. Tvoje API klíče jsou uložené v Nastavení → Tajné klíče a v kódu se zapisují jako {{secret:NAME}}: server je doplní sám, takže se nikdy nedostanou do prohlížeče.
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) }Každé volání spotřebuje 1 integrační kredit. Jen https, časový limit 15 sekund, odpovědi do 1 MB. Pokud API pošle tvůj klíč zpátky, nahradí se [secret] dřív, než odpověď uvidí tvoje aplikace.
Pravidla pro každý tajný klíč
Kdokoli, kdo používá tvou aplikaci, může s tajným klíčem volat API – aniž by ho viděl. Proto každý klíč funguje jen tak, jak povolíš:
- Povolené domény – jediné servery, na které se kdy pošle (např.
api.openai.com;*.example.compokrývá i subdomény). - Povolené metody – ve výchozím stavu GET a POST.
- Povolené cesty – volitelné prefixy cest, třeba
/v1/chat/. Prázdné znamená jakoukoli cestu. - Kam smí být klíč vložen – ve výchozím stavu jen do autentizační hlavičky (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key a podobně). Parametry dotazu (podle názvu, např.
key), cesta URL a tělo požadavku jsou vypnuté, dokud je nezapneš.
Volání, které porušuje pravidlo, se odmítne se stavem 403 dřív, než se cokoli odešle.
Klíče v URL nebo v těle
Dávej přednost API, která berou klíč v hlavičce. Některá ho místo toho mají v adrese – povol přesně to místo a zúž cestu:
// 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!' },
});V těle požadavku povol jen tehdy, když to API vyžaduje: kdokoli, kdo používá tvou aplikaci, by pak mohl klíč zapsat do čehokoli, co toto API ukládá (třeba do zprávy, poznámky nebo veřejného souboru), a zase si ho přečíst.