Zum Hauptinhalt springen

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 Sie patch() 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 OK mit der aktualisierten Ressource im Antwortkörper
    • 204 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