Aller au contenu principal

Request():put()

Exécuter une requête PUT et renvoyer un objet Response. Cette méthode est utilisée pour remplacer complètement une ressource sur un serveur.

Signature

put(): Response

Renvoie

Response - L'objet response contenant la réponse du serveur

Description

La méthode put() envoie une requête HTTP PUT à l'URL spécifiée lors de la création de l'objet Request. Les requêtes PUT sont généralement utilisées pour remplacer complètement les ressources existantes par de nouvelles données, ou pour créer une ressource à une URL spécifique.

Utilisez setParameter() pour ajouter des données au corps de la requête avant d'appeler put().

Exemples

Requête PUT de base

-- Remplacer toutes les données d'un utilisateur
local response = Request("https://api.example.com/users/123")
:setParameter("name", "John Smith")
:setParameter("email", "john.smith@example.com")
:setParameter("age", "35")
:setParameter("status", "active")
:put()

Requête PUT avec en-têtes JSON

-- Remplacer un message entier par un nouveau contenu
local response = Request("https://api.example.com/posts/456")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer votre-token-ici")
:setParameter("title", "Titre entièrement nouveau")
:setParameter("body", "Contenu de message entièrement nouveau")
:setParameter("userId", "1")
:setParameter("status", "published")
:put()

Traitement de la réponse PUT

-- Mettre à jour le profil utilisateur et gérer la réponse
local response = Request("https://api.example.com/users/789")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer token123")
:setParameter("name", "Jane Doe")
:setParameter("email", "jane.doe@example.com")
:setParameter("bio", "Développeur de logiciels")
:setParameter("website", "https://jane.example.com")
:setParameter("location", "San Francisco")
:put()

local data = response:getData()
local statusCode = response:getResponseCode()

if statusCode == 200 then
print("Utilisateur mis à jour avec succès !")
print("Données utilisateur mises à jour : " .. data)
elseif statusCode == 201 then
print("Utilisateur créé avec succès !")
print("Nouvelles données utilisateur : " .. data)
else
print("Échec de la mise à jour de l'utilisateur. Statut : " .. statusCode)
end

PUT pour la création de ressources

-- Créer une nouvelle ressource à une URL spécifique
local response = Request("https://api.example.com/files/document-v2")
:setHeader("Content-Type", "application/json")
:setParameter("content", "Ceci est le nouveau contenu du document")
:setParameter("version", "2.0")
:setParameter("author", "John Doe")
:put()

local status = response:getResponseCode()
if status == 201 then
print("Document créé avec succès !")
elseif status == 200 then
print("Document remplacé avec succès !")
else
print("Opération échouée avec le statut : " .. status)
end

Mise à jour conditionnelle PUT

-- Mettre à jour uniquement si la ressource n'a pas été modifiée
local response = Request("https://api.example.com/articles/123")
:setHeader("Content-Type", "application/json")
:setHeader("If-Match", "valeur-etag-ici")
:setHeader("Authorization", "Bearer token")
:setParameter("title", "Titre de l'article mis à jour")
:setParameter("content", "Contenu de l'article mis à jour")
:setParameter("author", "John Doe")
:put()

local status = response:getResponseCode()
if status == 412 then
print("Échec de la mise à jour : La ressource a été modifiée par un autre utilisateur")
elseif status == 200 or status == 201 then
print("Article mis à jour/remplacé avec succès")
end

Remplacement complet de ressource

-- Remplacer un produit entier par de nouvelles données
local response = Request("https://api.example.com/products/456")
:setHeader("Content-Type", "application/json")
:setParameter("name", "Widget Premium")
:setParameter("description", "Un widget de haute qualité avec fonctionnalités avancées")
:setParameter("price", "99.99")
:setParameter("stock", "50")
:setParameter("category", "electronics")
:setParameter("specs", '{"color": "black", "weight": "200g", "warranty": "2 years"}')
:put()

local updatedProduct = response:getData()
print("Produit remplacé : " .. updatedProduct)

Notes

  • Utilisez setParameter() pour ajouter des données au corps de la requête avant d'appeler put()
  • Les requêtes PUT devraient contenir la représentation complète de la ressource, pas seulement les changements
  • PUT est différent de PATCH en ce que PUT remplace la ressource entière, tandis que PATCH fait des mises à jour partielles
  • Les opérations PUT réussies renvoient typiquement :
    • 200 OK avec la ressource mise à jour dans le corps de la réponse (pour les mises à jour)
    • 201 Created avec la nouvelle ressource dans le corps de la réponse (pour les créations)
    • 204 No Content si l'opération a réussi mais qu'aucun corps de réponse n'est nécessaire
  • La méthode renvoie un objet Response que vous pouvez utiliser pour accéder aux données de réponse et au code de statut
  • Vérifiez toujours le code de statut de la réponse pour vous assurer que la requête a réussi
  • Les requêtes PUT sont idempotentes - faire la même requête plusieurs fois devrait avoir le même effet
  • Soyez prudent lors de l'utilisation des requêtes PUT car elles remplacent complètement les données existantes