Response:getResponseCode()
Obtient le code de statut HTTP de la réponse.
Signature
getResponseCode(): number
Renvoie
number
- Le code de statut HTTP (par exemple, 200, 404, 500)
Description
La méthode getResponseCode()
renvoie le code de statut HTTP de la réponse du serveur. Les codes de statut indiquent si la requête HTTP a réussi, échoué ou nécessite une action supplémentaire.
Exemples
Vérification de base du code de statut
-- Effectuer une requête et vérifier le code de statut
local response = Request("https://api.example.com/users"):get()
local statusCode = response:getResponseCode()
if statusCode == 200 then
print("Requête réussie !")
local data = response:getData()
print("Données de réponse : " .. data)
else
print("La requête a échoué avec le statut : " .. statusCode)
end
Gestion complète des codes de statut
local response = Request("https://api.example.com/data"):get()
local status = response:getResponseCode()
if status >= 200 and status < 300 then
-- Réponses de succès (2xx)
print("Requête réussie (2xx)")
local data = response:getData()
print("Données : " .. data)
elseif status >= 300 and status < 400 then
-- Réponses de redirection (3xx)
print("Redirection reçue (3xx)")
print("Statut : " .. status)
elseif status >= 400 and status < 500 then
-- Réponses d'erreur client (4xx)
print("Erreur client (4xx)")
local errorData = response:getData()
if errorData and errorData ~= "" then
print("Détails de l'erreur : " .. errorData)
end
elseif status >= 500 and status < 600 then
-- Réponses d'erreur serveur (5xx)
print("Erreur serveur (5xx)")
local errorData = response:getData()
if errorData and errorData ~= "" then
print("Détails de l'erreur serveur : " .. errorData)
end
else
print("Code de statut inattendu : " .. status)
end
Gestion spécifique des codes de statut
local response = Request("https://api.example.com/users/123"):get()
local status = response:getResponseCode()
if status == 200 then
print("OK - Requête réussie")
local userData = response:getData()
print("Données utilisateur : " .. userData)
elseif status == 201 then
print("Créé - Ressource créée avec succès")
local newResource = response:getData()
print("Nouvelle ressource : " .. newResource)
elseif status == 204 then
print("Aucun contenu - Requête réussie, aucun corps de réponse")
elseif status == 400 then
print("Mauvaise requête - Données de requête invalides")
local errorInfo = response:getData()
print("Erreur : " .. errorInfo)
elseif status == 401 then
print("Non autorisé - Authentification requise")
elseif status == 403 then
print("Interdit - Accès refusé")
elseif status == 404 then
print("Non trouvé - La ressource n'existe pas")
elseif status == 500 then
print("Erreur interne du serveur")
local serverError = response:getData()
print("Détails de l'erreur serveur : " .. serverError)
else
print("Autre statut : " .. status)
local otherData = response:getData()
if otherData and otherData ~= "" then
print("Réponse : " .. otherData)
end
end
Codes de statut spécifiques aux méthodes HTTP
-- Requête GET
local getResponse = Request("https://api.example.com/data"):get()
local getStatus = getResponse:getResponseCode()
if getStatus == 200 then
print("Données récupérées avec succès")
elseif getStatus == 404 then
print("Données non trouvées")
end
-- Requête POST
local postResponse = Request("https://api.example.com/users")
:setParameter("name", "Jean")
:setParameter("email", "jean@example.com")
:post()
local postStatus = postResponse:getResponseCode()
if postStatus == 201 then
print("Utilisateur créé avec succès")
local newUser = postResponse:getData()
print("Utilisateur créé : " .. newUser)
elseif postStatus == 400 then
print("Données utilisateur invalides")
elseif postStatus == 409 then
print("L'utilisateur existe déjà")
end
-- Requête DELETE
local deleteResponse = Request("https://api.example.com/users/123"):delete()
local deleteStatus = deleteResponse:getResponseCode()
if deleteStatus == 204 then
print("Utilisateur supprimé avec succès")
elseif deleteStatus == 404 then
print("Utilisateur non trouvé")
end
Fonction d'aide pour les codes de statut
function handleResponse(response)
local status = response:getResponseCode()
local data = response:getData()
-- Succès (2xx)
if status >= 200 and status < 300 then
print("✓ Requête réussie (" .. status .. ")")
if data and data ~= "" then
return data
else
return "Succès (aucun contenu)"
end
end
-- Erreurs client (4xx)
if status >= 400 and status < 500 then
print("✗ Erreur client (" .. status .. ")")
if data and data ~= "" then
print("Détails de l'erreur : " .. data)
end
return nil
end
-- Erreurs serveur (5xx)
if status >= 500 and status < 600 then
print("✗ Erreur serveur (" .. status .. ")")
if data and data ~= "" then
print("Erreur serveur : " .. data)
end
return nil
end
print("? Statut inattendu : " .. status)
return nil
end
-- Utilisation
local response = Request("https://api.example.com/data"):get()
local result = handleResponse(response)
if result then
print("Opération réussie : " .. result)
else
print("Opération échouée")
end
Logique de nouvelle tentative d'API
function makeRequestWithRetry(url, maxRetries)
local retries = 0
while retries < maxRetries do
local response = Request(url):get()
local status = response:getResponseCode()
-- Succès
if status == 200 then
return response:getData()
end
-- Ne pas retenter en cas d'erreurs client (4xx)
if status >= 400 and status < 500 then
print("Erreur client (" .. status .. "), pas de nouvelle tentative")
return nil
end
-- Retenter en cas d'erreurs serveur (5xx)
if status >= 500 and status < 600 then
retries = retries + 1
print("Erreur serveur (" .. status .. "), nouvelle tentative... (" .. retries .. "/" .. maxRetries .. ")")
-- Attendre avant de retenter (vous pourriez vouloir ajouter un délai ici)
else
retries = retries + 1
print("Statut inattendu (" .. status .. "), nouvelle tentative... (" .. retries .. "/" .. maxRetries .. ")")
end
end
print("Nombre maximal de tentatives atteint, abandon")
return nil
end
local data = makeRequestWithRetry("https://api.example.com/unstable", 3)
if data then
print("Requête réussie : " .. data)
end
Codes de statut HTTP courants
Code | Catégorie | Signification | Utilisation typique |
---|---|---|---|
200 | Succès | OK | Requête réussie |
201 | Succès | Créé | Ressource créée |
204 | Succès | Aucun contenu | Succès, aucun corps de réponse |
400 | Erreur client | Mauvaise requête | Données de requête invalides |
401 | Erreur client | Non autorisé | Authentification requise |
403 | Erreur client | Interdit | Accès refusé |
404 | Erreur client | Non trouvé | La ressource n'existe pas |
409 | Erreur client | Conflit | Conflit de ressource |
500 | Erreur serveur | Erreur interne du serveur | Erreur côté serveur |
502 | Erreur serveur | Mauvaise passerelle | Réponse en amont invalide |
503 | Erreur serveur | Service indisponible | Serveur temporairement indisponible |
Notes
- Vérifiez toujours le code de statut avant de traiter les données de réponse
- Les codes de statut sont standardisés entre HTTP/1.1 et HTTP/2
- Les codes 2xx indiquent le succès, 3xx indiquent la redirection, 4xx indiquent les erreurs client, 5xx indiquent les erreurs serveur
- Certaines APIs peuvent utiliser des codes de statut personnalisés ou des significations non standard
- Les réponses d'erreur (4xx, 5xx) peuvent contenir des informations utiles dans le corps de la réponse
- Les erreurs réseau ou les timeouts peuvent empêcher complètement la création d'un objet de réponse