Aller au contenu principal

Response

L'objet Response contient le résultat d'une requête HTTP effectuée avec le module Request. Il fournit l'accès aux données de réponse, au code de statut et aux autres métadonnées renvoyées par le serveur.

Vue d'ensemble

Les objets Response sont renvoyés par les méthodes de requête HTTP telles que get(), post(), put(), patch() et delete(). Ils encapsulent la réponse du serveur et fournissent des méthodes pour accéder au contenu de la réponse et aux métadonnées.

Méthodes

getData(): string

Obtient le contenu du corps de la réponse sous forme de chaîne de caractères.

Renvoie

string - Le contenu du corps de la réponse

getResponseCode(): number

Obtient le code de statut HTTP de la réponse.

Renvoie

number - Le code de statut HTTP (par exemple, 200, 404, 500)

Modèle d'utilisation courant

-- Effectuer une requête et gérer la réponse
local response = Request("https://api.example.com/data"):get()

-- Obtenir le code de statut pour vérifier si la requête a réussi
local statusCode = response:getResponseCode()

if statusCode == 200 then
-- La requête a réussi, obtenir les données
local data = response:getData()
print("Données de réponse : " .. data)
else
-- La requête a échoué, gérer l'erreur
print("La requête a échoué avec le statut : " .. statusCode)
local errorData = response:getData()
if errorData and errorData ~= "" then
print("Détails de l'erreur : " .. errorData)
end
end

Catégories de codes de statut HTTP

Plage de statutSignificationRéponse typique
200-299SuccèsContient les données demandées ou confirmation
300-399RedirectionGénéralement vide ou contient des informations de redirection
400-499Erreur clientContient la description de l'erreur
500-599Erreur serveurContient la description de l'erreur

Formats de données de réponse

Les données de réponse sont toujours renvoyées sous forme de chaîne de caractères, quel que soit le format d'origine :

  • JSON : "{\"key\":\"value\"}" - Peut nécessiter un parsing si vous avez un analyseur JSON
  • XML : "<?xml version=\"1.0\"?><root>...</root>" - Contenu XML sous forme de chaîne
  • Texte brut : "Réponse textuelle simple" - Contenu textuel direct
  • HTML : "<html><body>...</body></html>" - Contenu HTML sous forme de chaîne
  • Vide : "" - Aucun contenu (courant avec les réponses 204)

Meilleures pratiques

  1. Vérifiez toujours le code de statut en premier avant de traiter les données de réponse
  2. Gérez les réponses vides avec élégance, surtout avec les codes de statut 204
  3. Vérifiez le contenu de la réponse même pour les réponses d'erreur car elles peuvent contenir des informations utiles
  4. Soyez prêt pour les erreurs réseau qui peuvent empêcher la création d'un objet de réponse

Exemples

Gestion de réponse de base

local response = Request("https://api.example.com/users/123"):get()
local status = response:getResponseCode()

if status == 200 then
local userData = response:getData()
print("Données utilisateur : " .. userData)
else
print("Échec de l'obtention des données utilisateur. Statut : " .. status)
end

Gestion des erreurs

local response = Request("https://api.example.com/invalid"):get()
local status = response:getResponseCode()

if status == 404 then
print("Ressource non trouvée")
elseif status == 401 then
print("Authentification requise")
elseif status >= 500 then
print("Erreur serveur : " .. status)
local errorDetails = response:getData()
print("Détails de l'erreur : " .. errorDetails)
else
print("Code de statut inattendu : " .. status)
end

Utilisation avec différentes méthodes HTTP

-- Requête GET
local getResponse = Request("https://api.example.com/data"):get()
print("Statut GET : " .. getResponse:getResponseCode())

-- Requête POST
local postResponse = Request("https://api.example.com/data")
:setParameter("key", "value")
:post()
print("Statut POST : " .. postResponse:getResponseCode())

-- Requête DELETE
local deleteResponse = Request("https://api.example.com/data/123"):delete()
print("Statut DELETE : " .. deleteResponse:getResponseCode())