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 statut | Signification | Réponse typique |
---|---|---|
200-299 | Succès | Contient les données demandées ou confirmation |
300-399 | Redirection | Généralement vide ou contient des informations de redirection |
400-499 | Erreur client | Contient la description de l'erreur |
500-599 | Erreur serveur | Contient 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
- Vérifiez toujours le code de statut en premier avant de traiter les données de réponse
- Gérez les réponses vides avec élégance, surtout avec les codes de statut 204
- Vérifiez le contenu de la réponse même pour les réponses d'erreur car elles peuvent contenir des informations utiles
- 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())