Module Lua http
Le module http permet d'envoyer des requêtes HTTP personnalisées vers des serveurs distants.
Import
Pour importer le module :
Configuration YAML
Le module http nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.
iot:
modules:
http:
- name: http1 # nom unique du module
url: "http://example.com/api" # URL de la requête
method: "GET" # méthode HTTP
headers: # en-têtes de la requête
Content-Type: "application/json"
body: "" # corps de la requête
timeout: 30 # timeout en secondes (défaut : 30)
Vous pouvez définir uniquement le name et utiliser la fonction http.requestCustom() pour des requêtes dynamiques.
Détails de la configuration
name(string, requis) : Nom unique du module.url(string) : URL de la requête (ex."http://example.com/api").method(string) : Méthode HTTP (GET,POST,PUT,DELETE, etc.).headers(table) : En-têtes HTTP sous forme de paires clé-valeur.body(string) : Corps de la requête. Par défaut, chaîne vide.timeout(integer) : Timeout de la requête en secondes (défaut :30).
API Lua
Liste des fonctions
| Fonction | Signature Lua | Rôle | Retour (succès) | Retour (échec) |
|---|---|---|---|---|
request |
body, status, headers = http.request() |
Requête avec config prédéfinie. | string, number, table |
string, nil, nil |
requestCustom |
body, status, headers = http.requestCustom(url, method[, body[, headers]]) |
Requête personnalisée. | string, number, table |
string, nil, nil |
| Champs | http.name, http.type |
Métadonnées du module. | – | – |
http.request()
Envoie une requête HTTP avec la configuration prédéfinie dans l'instance.
-
Paramètres : Aucun. Utilise la configuration définie dans le YAML.
-
Retour :
body(string) : Corps de la réponse.status(integer) : Code de statut HTTP.headers(table) : En-têtes de la réponse.
local http = require("http")
local body, status, headers = http.request()
if status then
print("Statut HTTP : " .. status)
print("Réponse : " .. body)
else
print("Erreur : " .. body)
end
http.requestCustom(url, method[, body[, headers]])
Envoie une requête HTTP personnalisée avec les paramètres spécifiés.
- Paramètres :
url(string) : URL de la requête.method(string) : Méthode HTTP (GET,POST, etc.).body(string, optionnel) : Corps de la requête. Par défaut, chaîne vide.-
headers(table, optionnel) : En-têtes HTTP sous forme de paires clé-valeur. -
Retour :
body(string) : Corps de la réponse.status(integer) : Code de statut HTTP.headers(table) : En-têtes de la réponse.
local http = require("http")
local url = "http://api.example.com/data"
local method = "POST"
local body = '{"key": "value"}'
local headers = {["Content-Type"] = "application/json"}
local respBody, status, respHeaders = http.requestCustom(url, method, body, headers)
if status then
print("Statut HTTP : " .. status)
print("Réponse : " .. respBody)
else
print("Erreur : " .. respBody)
end
Exemple complet
local http = require("http")
-- Requête GET simple
local body, status, headers = http.requestCustom(
"https://api.example.com/status",
"GET"
)
if status == 200 then
print("API disponible : " .. body)
else
print("Erreur API : " .. status)
end
-- Requête POST avec données JSON
local payload = '{"sensor": "temp01", "value": 23.5}'
local body2, status2, _ = http.requestCustom(
"https://api.example.com/metrics",
"POST",
payload,
{["Content-Type"] = "application/json", ["Authorization"] = "Bearer token123"}
)
if status2 == 201 then
print("Données envoyées avec succès.")
end
Champs Lua associés
http.name: Retourne le nom de l'instance du module.http.type: Retourne le type du module ("http").