Saltar al contenido principal

Request():put()

Ejecuta una solicitud PUT y devuelve un objeto Response. Este método se usa para reemplazar completamente un recurso en un servidor.

Firma

put(): Response

Devuelve

Response - El objeto de respuesta que contiene la respuesta del servidor

Descripción

El método put() envía una solicitud HTTP PUT a la URL especificada al crear el objeto Request. Las solicitudes PUT se usan normalmente para reemplazar completamente recursos existentes con datos nuevos, o para crear un recurso en una URL específica.

Usa setParameter() para añadir datos al cuerpo de la solicitud antes de llamar a put().

Ejemplos

Solicitud PUT básica

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

Solicitud PUT con cabeceras JSON

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

Procesar la respuesta PUT

-- 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 para creación de recursos

-- 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

Actualización PUT condicional

-- 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

Reemplazo completo de recursos

-- 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)

Notas

  • Usa setParameter() para añadir datos al cuerpo de la solicitud antes de llamar a put()
  • Las solicitudes PUT deben contener la representación completa del recurso, no solo los cambios
  • PUT es diferente de PATCH en que PUT reemplaza el recurso entero, mientras que PATCH hace actualizaciones parciales
  • Las operaciones PUT exitosas normalmente devuelven:
    • 200 OK con el recurso actualizado en el cuerpo de la respuesta (para actualizaciones)
    • 201 Created con el nuevo recurso en el cuerpo de la respuesta (para creación)
    • 204 No Content si la operación fue exitosa pero no se necesita cuerpo de respuesta
  • El método devuelve un objeto Response que puedes usar para acceder a los datos de respuesta y al código de estado
  • Comprueba siempre el código de estado de la respuesta para asegurarte de que la solicitud fue exitosa
  • Las solicitudes PUT son idempotentes: hacer la misma solicitud varias veces debería tener el mismo efecto
  • Ten cuidado al usar solicitudes PUT ya que reemplazan completamente los datos existentes