Request():patch()
Führt eine PATCH-Anfrage aus und gibt ein Response-Objekt zurück. Diese Methode wird verwendet, um eine Ressource auf einem Server teilweise zu aktualisieren.
Signatur
patch(): Response
Rückgabe
Response - Das Response-Objekt mit der Serverantwort
Beschreibung
Die Methode patch() sendet eine HTTP-PATCH-Anfrage an die URL, die beim Erstellen des Request-Objekts angegeben wurde. PATCH-Anfragen werden typischerweise verwendet, um teilweise Aktualisierungen an vorhandenen Ressourcen vorzunehmen, indem nur die Felder geändert werden, die im Anfragekörper angegeben sind.
Verwenden Sie setParameter(), um dem Anfragekörper Daten hinzuzufügen, bevor Sie patch() aufrufen.
Beispiele
Einfache PATCH-Anfrage
-- Update only the email field of a user
local response = Request("https://api.example.com/users/123")
:setParameter("email", "newemail@example.com")
:patch()
PATCH-Anfrage mit JSON-Headern
-- Partially update a post with multiple fields
local response = Request("https://api.example.com/posts/456")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer your-token-here")
:setParameter("title", "Updated Post Title")
:setParameter("status", "published")
:patch()
PATCH-Antwort verarbeiten
-- Update user profile and handle response
local response = Request("https://api.example.com/users/789")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer token123")
:setParameter("bio", "Updated bio information")
:setParameter("website", "https://mywebsite.com")
:patch()
local data = response:getData()
local statusCode = response:getResponseCode()
if statusCode == 200 then
print("User updated successfully!")
print("Updated data: " .. data)
elseif statusCode == 204 then
print("User updated successfully! (No content returned)")
else
print("Failed to update user. Status: " .. statusCode)
end
Bedingte PATCH-Aktualisierung
-- Update only if resource hasn't been modified
local response = Request("https://api.example.com/articles/123")
:setHeader("Content-Type", "application/json")
:setHeader("If-Match", "etag-value-here")
:setHeader("Authorization", "Bearer token")
:setParameter("content", "Updated article content")
:setParameter("lastModified", "2023-12-01")
:patch()
local status = response:getResponseCode()
if status == 412 then
print("Update failed: Resource has been modified by another user")
elseif status == 200 or status == 204 then
print("Article updated successfully")
end
PATCH mit Feldauswahl
-- Update specific fields while leaving others unchanged
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("Product updated: " .. updatedProduct)
Hinweise
- Verwenden Sie
setParameter(), um dem Anfragekörper Daten hinzuzufügen, bevor Siepatch()aufrufen - PATCH-Anfragen sollten nur die Felder enthalten, die Sie aktualisieren möchten, nicht die gesamte Ressource
- PATCH unterscheidet sich von PUT dahingehend, dass PATCH teilweise Aktualisierungen durchführt, während PUT die gesamte Ressource ersetzt
- Erfolgreiche PATCH-Operationen geben typischerweise zurück:
200 OKmit der aktualisierten Ressource im Antwortkörper204 No Content, wenn die Aktualisierung erfolgreich war, aber kein Antwortkörper benötigt wird
- Die Methode gibt ein Response-Objekt zurück, mit dem Sie auf die Antwortdaten und den Statuscode zugreifen können
- Prüfen Sie immer den Antwort-Statuscode, um sicherzustellen, dass die Anfrage erfolgreich war
- PATCH-Anfragen sind nicht zwingend idempotent - mehrmaliges Senden derselben Anfrage kann je nach Implementierung unterschiedliche Auswirkungen haben