Response:getData()
Obtient le contenu du corps de la réponse sous forme de chaîne de caractères de la réponse HTTP.
Signature
getData(): string
Renvoie
string
- Le contenu du corps de la réponse sous forme de chaîne de caractères
Description
La méthode getData()
récupère le contenu du corps de la réponse d'une réponse HTTP. Le contenu est toujours renvoyé sous forme de chaîne de caractères, quel que soit le format d'origine (JSON, XML, texte brut, HTML, etc.).
Exemples
Utilisation de base
-- Effectuer une requête GET et obtenir les données de réponse
local response = Request("https://api.example.com/users"):get()
local userData = response:getData()
print("Données utilisateur : " .. userData)
Travail avec les données JSON
-- Obtenir les données de réponse JSON
local response = Request("https://api.example.com/posts/1"):get()
local jsonData = response:getData()
-- jsonData sera une chaîne comme : "{\"id\":1,\"title\":\"Exemple de message\",\"body\":\"Contenu\"}"
print("JSON brut : " .. jsonData)
-- Note : Vous auriez besoin d'un analyseur JSON pour convertir cette chaîne en table Lua
-- Par exemple (si vous avez un analyseur JSON disponible) :
-- local parsedData = json.decode(jsonData)
-- print("Titre du message : " .. parsedData.title)
Gestion des réponses XML
-- Obtenir les données de réponse XML
local response = Request("https://api.example.com/data.xml"):get()
local xmlData = response:getData()
-- xmlData contiendra le contenu XML sous forme de chaîne
if xmlData and xmlData ~= "" then
print("Données XML reçues : " .. xmlData)
-- Vous auriez besoin d'un analyseur XML pour traiter ces données
end
Données de réponse d'erreur
-- Effectuer une requête qui pourrait échouer
local response = Request("https://api.example.com/invalid"):get()
local statusCode = response:getResponseCode()
if statusCode ~= 200 then
-- Obtenir les détails de l'erreur du corps de la réponse
local errorData = response:getData()
if errorData and errorData ~= "" then
print("Détails de l'erreur : " .. errorData)
else
print("Aucun détail d'erreur fourni")
end
end
Données de réponse de requête POST
-- Créer une ressource et obtenir la réponse
local response = Request("https://api.example.com/users")
:setParameter("name", "John Doe")
:setParameter("email", "john@example.com")
:post()
local status = response:getResponseCode()
local responseData = response:getData()
if status == 201 then
print("Utilisateur créé avec succès !")
print("Données de l'utilisateur créé : " .. responseData)
else
print("Échec de la création de l'utilisateur. Statut : " .. status)
if responseData then
print("Erreur : " .. responseData)
end
end
Gestion des réponses vides
-- Gérer les réponses qui pourraient être vides
local response = Request("https://api.example.com/delete/123"):delete()
local status = response:getResponseCode()
local data = response:getData()
if status == 204 then
-- Réponse sans contenu
print("Suppression réussie (aucun contenu renvoyé)")
if data == "" or not data then
print("La réponse est vide comme prévu")
end
elseif status == 200 then
print("Suppression réussie avec réponse : " .. data)
else
print("Échec de la suppression avec le statut : " .. status)
end
Traitement de différents types de contenu
-- Vérifier l'en-tête Content-Type si disponible (cela nécessiterait d'accéder aux en-têtes de réponse)
-- Pour l'instant, nous pouvons détecter des modèles courants dans les données
local response = Request("https://api.example.com/data"):get()
local data = response:getData()
if data and data ~= "" then
-- Détecter le format JSON
if string.sub(data, 1, 1) == "{" or string.sub(data, 1, 1) == "[" then
print("Données JSON reçues")
-- Traiter comme JSON
-- Détecter le format XML
elseif string.find(data, "^<%?xml") or string.find(data, "^<[^>]+>") then
print("Données XML reçues")
-- Traiter comme XML
-- Détecter le format HTML
elseif string.find(data, "^<html") or string.find(data, "^<!DOCTYPE") then
print("Données HTML reçues")
-- Traiter comme HTML
else
print("Données textuelles brutes reçues")
-- Traiter comme texte brut
end
print("Longueur des données : " .. string.len(data) .. " caractères")
else
print("Aucune donnée reçue")
end
Gestion des réponses volumineuses
-- Gérer les réponses potentiellement volumineuses
local response = Request("https://api.example.com/large-data"):get()
local data = response:getData()
if data then
local dataSize = string.len(data)
print("Reçu " .. dataSize .. " caractères de données")
if dataSize > 10000 then
print("Réponse volumineuse détectée - 100 premiers caractères :")
print(string.sub(data, 1, 100) .. "...")
else
print("Réponse complète :")
print(data)
end
end
Types de contenu de réponse courants
Type de contenu | Exemple de données | Utilisation |
---|---|---|
application/json | {"key":"value"} | APIs REST, services web modernes |
text/plain | Réponse textuelle simple | Messages de statut, journaux |
text/html | <html><body>...</body></html> | Pages web, pages d'erreur |
application/xml | <?xml version="1.0"?><root>...</root> | APIs SOAP, données XML |
text/csv | nom,âge,ville\nJean,30,Paris | Export de données, feuilles de calcul |
Notes
- 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
- Les réponses vides renvoient une chaîne vide
""
(courant avec les codes de statut 204) - Les réponses d'erreur (4xx, 5xx) peuvent contenir des informations d'erreur utiles dans le corps de la réponse
- Les réponses volumineuses peuvent consommer beaucoup de mémoire - envisagez de traiter par morceaux si nécessaire
- Vous pourriez avoir besoin de bibliothèques d'analyse supplémentaires pour travailler avec JSON, XML ou d'autres formats structurés
- Vérifiez toujours si la réponse est vide avant de traiter pour éviter les erreurs