🌐 Requêtes HTTP
Envoyer des requêtes HTTP depuis vos commandes pour récupérer des données ou interagir avec des APIs externes
Introduction
BotStrike permet d'effectuer des requêtes HTTP directement depuis vos commandes pour communiquer avec des APIs, télécharger du contenu ou interagir avec des services web externes.
| Méthode | Description |
|---|---|
GET | Récupérer des données depuis un serveur |
POST | Envoyer des données vers un serveur |
PUT | Mettre à jour une ressource existante |
DELETE | Supprimer une ressource |
Requête GET
Récupérer le contenu d'une page web ou les données d'une API.
# Requête GET simple
result = bot.http_get("https://api.example.com/data")
bot.sendMessage(str(result))
Avec headers personnalisés
# Requête GET avec token d'authentification
result = bot.http_get(
"https://api.example.com/users",
token="votre_token_ici"
)
bot.sendMessage(str(result))
Avec callbacks de succès/erreur
# Redirige vers une commande après la requête bot.http_get( "https://api.example.com/data", headers={"Authorization": "Bearer mon_token"}, onSuccess="/onLoading", onError="/onError", _ctx=u # passer le contexte utilisateur )
// Requête GET simple
HTTP.get({
url: "https://api.example.com/data",
success: "/onLoading",
error: "/onError"
})
Avec headers personnalisés
// GET avec headers
HTTP.get({
url: "https://api.example.com/users",
success: "/onLoading",
error: "/onError",
headers: { "Authorization": "Bearer mon_token" }
})
content-type est application/json. Si l'API cible ne le supporte pas, définissez headers: { "content-type": null }
Requête POST
Envoyer des données vers un serveur ou une API.
# Envoyer des données en POST
result = bot.http_post(
"https://api.example.com/submit",
body={"name": "BotStrike", "version": "1.0"}
)
bot.sendMessage("Réponse : " + str(result))
Avec token et callbacks
result = bot.http_post(
"https://api.example.com/auth",
body={"username": "admin", "password": "secret"},
token="api_key_ici",
onSuccess="/onSuccess",
onError="/onError",
_ctx=u
)
// Envoyer des données en POST
HTTP.post({
url: "https://api.example.com/submit",
body: { name: "BotStrike", version: "1.0" },
success: "/onSuccess",
error: "/onError"
})
Avec cookies et redirections
HTTP.post({
url: "https://api.example.com/auth",
body: { username: "admin" },
cookies: "session=abc123",
folow_redirects: true,
success: "/onSuccess"
})
Autres méthodes HTTP
En Python, vous pouvez utiliser la nouvelle API unifiée HTTP.* qui supporte toutes les méthodes (GET, POST, PUT, DELETE, PATCH) ainsi que les anciens raccourcis bot.http_get() / bot.http_post().
# API moderne (recommandée) result = HTTP.get("https://api.example.com/data") result = HTTP.post("https://api.example.com/data", body={"key": "value"}) result = HTTP.put("https://api.example.com/users/42", body={"name": "Alice"}) result = HTTP.delete("https://api.example.com/users/42") result = HTTP.patch("https://api.example.com/users/42", body={"online": True}) # Anciens raccourcis (toujours valides) result = bot.http_get("https://api.example.com/data") result = bot.http_post("https://api.example.com/data", body={"key": "value"})
En JavaScript, toutes les méthodes HTTP sont disponibles :
// PUT — mettre à jour une ressource HTTP.put({ url: "https://api.example.com/users/42", body: { name: "Nouveau nom" }, success: "/onUpdated" }) // DELETE — supprimer une ressource HTTP.delete({ url: "https://api.example.com/users/42", success: "/onDeleted" }) // OPTIONS — vérifier les méthodes supportées HTTP.options({ url: "https://api.example.com/users", success: "/onOptions" })
HTTP.get, HTTP.post, HTTP.put, HTTP.delete, HTTP.options sont disponibles en BSJS.
Options avancées
| Option | Description | Disponible |
|---|---|---|
headers | En-têtes HTTP personnalisés | Python & JS |
token | Token Bearer automatique | Python |
body | Corps de la requête (POST/PUT) | Python & JS |
cookies | Cookies à envoyer | JS |
folow_redirects | Suivre les redirections | JS |
background | Exécuter en arrière-plan (timeout plus long) | JS |
onSuccess / success | Commande exécutée si la requête réussit | Python & JS |
onError / error | Commande exécutée si la requête échoue | Python & JS |
# Requête avec toutes les options
result = bot.http_post(
"https://api.example.com/webhook",
body={"event": "new_user", "user_id": u["id"]},
headers={"X-Custom": "valeur"},
token="mon_api_key",
onSuccess="/onWebhookOK",
onError="/onWebhookFail",
_ctx=u
)
// Requête en arrière-plan pour les pages lentes HTTP.get({ url: "https://slow-api.example.com/data", success: "/onLoaded", error: "/onError", background: true, // timeout plus long folow_redirects: true, headers: { "content-type": null } })
Réponse & Callbacks
Quand une requête HTTP utilise des callbacks (success / error), la commande cible reçoit des variables spéciales :
Commande de succès (onSuccess)
# La réponse est dans u["response"]
response = u.get("response", {})
bot.sendMessage("Données reçues : " + str(response))
Commande d'erreur (onError)
# L'erreur est dans u["error"]
error = u.get("error", "Erreur inconnue")
bot.sendMessage("Erreur : " + error)
Commande de succès (/onLoading)
// Le contenu téléchargé est dans la variable content Bot.sendMessage(content); Bot.inspect(http_status); // "200" Bot.inspect(http_headers); // en-têtes de la réponse Bot.inspect(cookies); // cookies reçus
Commande d'erreur (/onError)
Bot.sendMessage("Erreur lors du téléchargement");
Bot.inspect(http_status); // code HTTP d'erreur
Bot.inspect(http_headers); // en-têtes de la réponse
Bot.inspect(cookies);
| Variable | Description | Langage |
|---|---|---|
content | Contenu de la réponse (texte brut) | JS |
http_status | Code de statut HTTP (200, 404, etc.) | JS |
http_headers | En-têtes de la réponse | JS |
cookies | Cookies reçus dans la réponse | JS |
u["response"] | Réponse parsée (JSON) | Python |
u["error"] | Message d'erreur | Python |
⚡ API HTTP.* unifiée (Python & JavaScript)
L'objet global HTTP est disponible dans les deux langages avec la même syntaxe. Toutes les méthodes retournent un objet JSON :
| Méthode | Signature | Description |
|---|---|---|
HTTP.get | HTTP.get(url, headers?, token?) | Récupérer des données |
HTTP.post | HTTP.post(url, body?, headers?, token?) | Envoyer des données |
HTTP.put | HTTP.put(url, body?, headers?, token?) | Mettre à jour |
HTTP.delete | HTTP.delete(url, body?, headers?, token?) | Supprimer |
HTTP.patch | HTTP.patch(url, body?, headers?, token?) | Modifier partiellement |
HTTP.request | HTTP.request({url, method, body, headers, token}) | Requête générique |
# Récupérer la météo res = HTTP.get("https://wttr.in/Paris?format=j1") temp = res["current_condition"][0]["temp_C"] Bot.sendMessage(f"🌡️ Paris : {temp}°C") # Avec token Bearer (auto-injecté dans Authorization) res = HTTP.get("https://api.openai.com/v1/models", token="sk-xxx") # Avec headers custom res = HTTP.post( "https://api.example.com/webhook", body={"event": "signup", "user": user["id"]}, headers={"X-Api-Key": "abc", "User-Agent": "MyBot/1.0"} ) Bot.sendMessage(f"Status : {res.get('status', 'OK')}")
// Syntaxe simple : url en string let res = HTTP.get("https://wttr.in/Paris?format=j1"); let temp = res.current_condition[0].temp_C; Bot.sendMessage(`🌡️ Paris : ${temp}°C`); // Syntaxe objet (compatible avec callbacks success/error) HTTP.get({ url: "https://api.example.com/data", headers: { "X-Api-Key": "abc" }, success: "/onLoaded", error: "/onError" }); // POST let res2 = HTTP.post( "https://api.example.com/webhook", { event: "signup", user: user.id }, { "X-Api-Key": "abc" } ); Bot.sendMessage(`Status : ${res2.status || "OK"}`);
HTTP.get("url") retourne directement le résultat, HTTP.get({url, success, error}) utilise les callbacks (style asynchrone).
📥 Format de la réponse
# JSON valide : le corps parse est renvoye DIRECTEMENT # (pas d'enveloppe status/body/headers). { "id": 42, "name": "Alice" } # Reponse NON-JSON (HTML, texte brut) : # Python -> dictionnaire d'erreur, le corps n'est pas accessible # JavaScript -> le texte brut dans la cle `raw` # Python : { "error": "Expecting value: line 1 column 1 (char 0)" } # JavaScript : { "raw": "<html>...</html>", "__http_status": 200 } # En JavaScript, le code HTTP est disponible via __http_status # sur toute reponse. En Python il n'est pas expose : testez la # presence de la cle "error" pour detecter un echec.