Zum Hauptinhalt springen

Request():put()

Führt eine PUT-Anfrage aus und gibt ein Response-Objekt zurück. Diese Methode wird verwendet, um eine Ressource auf einem Server vollständig zu ersetzen.

Signatur

put(): Response

Rückgabe

Response - Das Response-Objekt mit der Serverantwort

Beschreibung

Die Methode put() sendet eine HTTP-PUT-Anfrage an die URL, die beim Erstellen des Request-Objekts angegeben wurde. PUT-Anfragen werden typischerweise verwendet, um vorhandene Ressourcen vollständig durch neue Daten zu ersetzen oder um eine Ressource unter einer bestimmten URL zu erstellen.

Verwenden Sie setParameter(), um dem Anfragekörper Daten hinzuzufügen, bevor Sie put() aufrufen.

Beispiele

Einfache PUT-Anfrage

-- Replace a user's complete data
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()

PUT-Anfrage mit JSON-Headern

-- Replace an entire post with new content
local response = Request("https://api.example.com/posts/456")
:setHeader("Content-Type", "application/json")
:setHeader("Authorization", "Bearer your-token-here")
:setParameter("title", "Completely New Title")
:setParameter("body", "Completely new post content")
:setParameter("userId", "1")
:setParameter("status", "published")
:put()

PUT-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("name", "Jane Doe")
:setParameter("email", "jane.doe@example.com")
:setParameter("bio", "Software Developer")
:setParameter("website", "https://jane.example.com")
:setParameter("location", "San Francisco")
:put()

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

if statusCode == 200 then
print("User updated successfully!")
print("Updated user data: " .. data)
elseif statusCode == 201 then
print("User created successfully!")
print("New user data: " .. data)
else
print("Failed to update user. Status: " .. statusCode)
end

PUT zur Ressourcenerstellung

-- Create a new resource at a specific URL
local response = Request("https://api.example.com/files/document-v2")
:setHeader("Content-Type", "application/json")
:setParameter("content", "This is the new document content")
:setParameter("version", "2.0")
:setParameter("author", "John Doe")
:put()

local status = response:getResponseCode()
if status == 201 then
print("Document created successfully!")
elseif status == 200 then
print("Document replaced successfully!")
else
print("Operation failed with status: " .. status)
end

Bedingte PUT-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("title", "Updated Article Title")
:setParameter("content", "Updated article content")
:setParameter("author", "John Doe")
:put()

local status = response:getResponseCode()
if status == 412 then
print("Update failed: Resource has been modified by another user")
elseif status == 200 or status == 201 then
print("Article updated/replaced successfully")
end

Vollständiger Ressourcenersatz

-- Replace an entire product with new data
local response = Request("https://api.example.com/products/456")
:setHeader("Content-Type", "application/json")
:setParameter("name", "Premium Widget")
:setParameter("description", "A high-quality widget with advanced features")
: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("Product replaced: " .. updatedProduct)

Hinweise

  • Verwenden Sie setParameter(), um dem Anfragekörper Daten hinzuzufügen, bevor Sie put() aufrufen
  • PUT-Anfragen sollten die vollständige Darstellung der Ressource enthalten, nicht nur die Änderungen
  • PUT unterscheidet sich von PATCH dahingehend, dass PUT die gesamte Ressource ersetzt, während PATCH teilweise Aktualisierungen vornimmt
  • Erfolgreiche PUT-Operationen geben typischerweise zurück:
    • 200 OK mit der aktualisierten Ressource im Antwortkörper (bei Aktualisierungen)
    • 201 Created mit der neuen Ressource im Antwortkörper (bei Erstellung)
    • 204 No Content, wenn die Operation 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
  • PUT-Anfragen sind idempotent - mehrmaliges Senden derselben Anfrage sollte dieselbe Wirkung haben
  • Seien Sie vorsichtig bei der Verwendung von PUT-Anfragen, da sie vorhandene Daten vollständig ersetzen