API: HTTP-pyynnöt
Funktiot HTTP-pyyntöjen tekemiseen ulkoisiin palveluihin ja rajapintoihin.
C++-rekisteröinti: regWeb(js).
Toteutus: jsWeb.h + NetCurl.h (libcurl-kääre).
http_get
http_get(url: string) → object
Suorittaa HTTP GET -pyynnön.
Parametrit:
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
url |
merkkijono | Koko URL-osoite protokolloineen (https://...) |
Tulos:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
status |
numero | HTTP-vastauskoodi (200, 404, 500 jne.) |
body |
merkkijono | Vastauksen runko |
error |
merkkijono | curl-virheilmoitus tai "" |
Esimerkki:
let r = http_get("https://api.example.com/health");
if (r.error) {
console.log("Pyynnön virhe:", r.error);
} else if (r.status !== 200) {
console.log("HTTP-virhe:", r.status);
} else {
let data = JSON.parse(r.body);
console.log("Vastaus:", JSON.stringify(data));
}
http_post
http_post(url: string, body: string, headers?: string[]) → object
Suorittaa HTTP POST -pyynnön.
Parametrit:
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
url |
merkkijono | Koko URL-osoite |
body |
merkkijono | Pyynnön runko (JSON, lomakedata jne.) |
headers |
string[] | (valinnainen) HTTP-otsikoiden taulukko |
Otsikkomuoto:
["Content-Type: application/json", "Authorization: Bearer TOKEN"]
Tulos:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
status |
numero | HTTP-vastauskoodi |
body |
merkkijono | Vastauksen runko |
error |
merkkijono | Virheilmoitus tai "" |
Esimerkkejä:
// Lähetä JSON
let payload = JSON.stringify({ event: "alert", level: "critical" });
let r = http_post(
"https://api.example.com/events",
payload,
["Content-Type: application/json"]
);
console.log(r.status, r.body);
// Autentikoinnilla
let r2 = http_post(
"https://api.example.com/data",
JSON.stringify({ value: 42 }),
[
"Content-Type: application/json",
"Authorization: Bearer my_token_here"
]
);
// Ilman otsikoita (esim. lomakedata)
let r3 = http_post(
"https://example.com/form",
"name=John&age=30"
);
Webhookien käyttö
Discord
let url = "https://discord.com/api/webhooks/ID/TOKEN";
let r = http_post(url, JSON.stringify({
content: "Hälytys! Palvelu on alhaalla."
}), ["Content-Type: application/json"]);
console.log(r.status); // 204 = onnistunut
Slack
let url = "https://hooks.slack.com/services/T.../B.../...";
let r = http_post(url, JSON.stringify({
text: "Hälytys! Palvelu on alhaalla."
}), ["Content-Type: application/json"]);
console.log(r.status); // 200 = onnistunut
Telegram
let token = "BOT_TOKEN";
let chatId = "CHAT_ID";
let text = encodeURIComponent("Hälytys! Palvelu on alhaalla.");
let r = http_get(
"https://api.telegram.org/bot" + token +
"/sendMessage?chat_id=" + chatId + "&text=" + text
);
let resp = JSON.parse(r.body);
console.log(resp.ok); // true = onnistunut
Virheenkäsittely
function safePost(url, payload, headers) {
let r = http_post(url, payload, headers);
// Verkkovirhe (curl)
if (r.error) {
console.log("[VIRHE] Verkkovirhe:", r.error);
return false;
}
// HTTP-virhe
if (r.status < 200 || r.status >= 300) {
console.log("[VIRHE] HTTP", r.status, ":", r.body);
return false;
}
return true;
}
HTTP-vastauskoodit
| Koodi | Merkitys |
|---|---|
| 200 | OK |
| 201 | Luotu |
| 204 | Ei sisältöä (Discord-webhook onnistuminen) |
| 400 | Väärä pyyntö |
| 401 | Ei valtuutettu |
| 403 | Kielletty |
| 404 | Ei löytynyt |
| 429 | Liian monta pyyntöä (rajoitus) |
| 500 | Sisäinen palvelinvirhe |