Aller au contenu principal

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 contenuExemple de donnéesUtilisation
application/json{"key":"value"}APIs REST, services web modernes
text/plainRéponse textuelle simpleMessages 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/csvnom,âge,ville\nJean,30,ParisExport 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