Skip to content

Module Lua http

Le module http permet d'envoyer des requêtes HTTP personnalisées vers des serveurs distants.

Import

Pour importer le module :

local http = require("http")

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").