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 aput() - 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 OKcon el recurso actualizado en el cuerpo de la respuesta (para actualizaciones)201 Createdcon el nuevo recurso en el cuerpo de la respuesta (para creación)204 No Contentsi 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