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'appelerput()
- 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