Aller au contenu

Module http

Le module http permet d'envoyer des requêtes HTTP avec des configurations personnalisées, telles que la méthode, les en-têtes, le corps, et l'URL.

Pour l'importer il faut utiliser la déclaration suivante :

local http = require("http") 
-- remplacer http par le name dans le fichier de configuration

Configuration

Le module http nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.

Pour la configuration voici un exemple de toutes les options possibles :

iot:
  modules:
    http: # module http
      - name: http1 # nom du module
        url: "http://example.com" # url de la requête
        method: "GET" # méthode de la requête
        headers: # en-têtes de la requête
          Content-Type: "application/json"
        body: "" # corps de la requête

Vous pouvez seulement défnir le name et utiliser la fonction Lua http.requestCustom(url, method[, body[, headers]]) pour envoyer une requête HTTP personnalisée.

Détails de la configuration

  • name : Nom du module. Il doit être unique et ne pas contenir d'espaces ou de caractères spéciaux.
  • url : URL de la requête. Il doit être au format http://example.com.
  • method : Méthode de la requête. Il peut s'agir de GET, POST, PUT, DELETE, etc.
  • headers : En-têtes de la requête. Il s'agit d'un tableau Lua contenant les en-têtes HTTP sous forme de paires clé-valeur (ex. {["Content-Type"] = "application/json"}).
  • body : Corps de la requête. Il s'agit d'une chaîne de caractères qui sera envoyée dans le corps de la requête HTTP. Par défaut, c'est une chaîne vide.

Fonctions Lua

http.request()

Envoie une requête HTTP avec la configuration prédéfinie dans l'instance HttpSocket.

  • Paramètres : Aucun. Cette fonction utilise la configuration définie dans l'objet HttpSocket pour effectuer la requête.

  • Retour :

  • Le corps de la réponse sous forme de chaîne de caractères, ou un message d'erreur en cas d'échec.
local http = require("http")
local response, httpstatus, headers = http.request()
if not httpstatus then
    print("Erreur lors de la requête HTTP : " .. err)
else
    print("Réponse : " .. response)
    print("Statut HTTP : " .. httpstatus)
    print("En-têtes :")
    for k, v in pairs(headers) do
        print(k .. ": " .. v)
    end
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) : L'URL à laquelle la requête doit être envoyée.
  • method (string) : La méthode HTTP à utiliser (GET, POST, etc.).
  • body (string, optionnel) : Le corps de la requête. Par défaut, c'est une chaîne vide.
  • headers (table, optionnel) : Un tableau Lua contenant les en-têtes HTTP sous forme de paires clé-valeur (ex. {["Content-Type"] = "application/json"}).

  • Retour :

  • Le corps de la réponse sous forme de chaîne de caractères, ou un message d'erreur en cas d'échec.
local http = require("http")
local url = "http://example.com"
local method = "POST"
local body = '{"key": "value"}'
local headers = {["Content-Type"] = "application/json"}

local response, httpstatus, headers = http.requestCustom(url, method, body, headers)
if not httpstatus then
    print("Erreur lors de la requête HTTP personnalisée : " .. response)
else
    print("Réponse : " .. response)
    print("Statut HTTP : " .. httpstatus)
    print("En-têtes :")
    for k, v in pairs(headers) do
        print(k .. ": " .. v)
    end
end

Champs Lua associés

  • http.name : Retourne le nom de l'instance http.
  • http.type : Retourne le type du module (ici, http).