Request():patch()
Exécuter une requête PATCH et renvoyer un objet Response. Cette méthode est utilisée pour mettre à jour partiellement une ressource sur un serveur.
Signature
patch(): Response
Renvoie
Response
- L'objet response contenant la réponse du serveur
Description
La méthode patch()
envoie une requête HTTP PATCH à l'URL spécifiée lors de la création de l'objet Request. Les requêtes PATCH sont généralement utilisées pour faire des mises à jour partielles des ressources existantes, modifiant uniquement les champs qui sont fournis dans le corps de la requête.
Utilisez setParameter()
pour ajouter des données au corps de la requête avant d'appeler patch()
.
Exemples
Requête PATCH de base
-- Mettre à jour uniquement le champ email d'un utilisateur
local response = Request("https://api.example.com/users/123")
:setParameter("email", "newemail@example.com")
:patch()
Requête PATCH avec en-têtes JSON
-- Mettre à jour partiellement un message avec plusieurs champs
local response = Request("https://api.example.com/posts/456")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer votre-token-ici")
:setParameter("title", "Titre du message mis à jour")
:setParameter("status", "published")
:patch()
Traitement de la réponse PATCH
-- 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("bio", "Informations de bio mises à jour")
:setParameter("website", "https://monwebsite.com")
:patch()
local data = response:getData()
local statusCode = response:getResponseCode()
if statusCode == 200 then
print("Utilisateur mis à jour avec succès !")
print("Données mises à jour : " .. data)
elseif statusCode == 204 then
print("Utilisateur mis à jour avec succès ! (Aucun contenu renvoyé)")
else
print("Échec de la mise à jour de l'utilisateur. Statut : " .. statusCode)
end
Mise à jour conditionnelle PATCH
-- 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("content", "Contenu de l'article mis à jour")
:setParameter("lastModified", "2023-12-01")
:patch()
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 == 204 then
print("Article mis à jour avec succès")
end
PATCH avec sélection de champs
-- Mettre à jour des champs spécifiques tout en laissant les autres inchangés
local response = Request("https://api.example.com/products/456")
:setHeader("Content-Type", "application/json")
:setParameter("price", "29.99")
:setParameter("stock", "150")
:setParameter("discount", "10")
:patch()
local updatedProduct = response:getData()
print("Produit mis à jour : " .. updatedProduct)
Notes
- Utilisez
setParameter()
pour ajouter des données au corps de la requête avant d'appelerpatch()
- Les requêtes PATCH devraient contenir uniquement les champs que vous voulez mettre à jour, pas la ressource entière
- PATCH est différent de PUT en ce que PATCH effectue des mises à jour partielles, tandis que PUT remplace la ressource entière
- Les opérations PATCH réussies renvoient typiquement :
200 OK
avec la ressource mise à jour dans le corps de la réponse204 No Content
si la mise à jour 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 PATCH ne sont pas nécessairement idempotentes - faire la même requête plusieurs fois peut avoir des effets différents selon l'implémentation