Saltar al contenido principal

Request():patch()

Ejecuta una solicitud PATCH y devuelve un objeto Response. Este método se usa para actualizar parcialmente un recurso en un servidor.

Firma

patch(): Response

Devuelve

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

Descripción

El método patch() envía una solicitud HTTP PATCH a la URL especificada al crear el objeto Request. Las solicitudes PATCH se usan normalmente para hacer actualizaciones parciales de recursos existentes, modificando solo los campos que se proporcionan en el cuerpo de la solicitud.

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

Ejemplos

Solicitud PATCH básica

-- Update only the email field of a user
local response = Request("https://api.example.com/users/123")
:setParameter("email", "newemail@example.com")
:patch()

Solicitud PATCH con cabeceras JSON

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

Procesar la respuesta PATCH

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

Actualización PATCH 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("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 con selección de campos

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

Notas

  • Usa setParameter() para añadir datos al cuerpo de la solicitud antes de llamar a patch()
  • Las solicitudes PATCH solo deben contener los campos que quieres actualizar, no el recurso completo
  • PATCH es diferente de PUT en que PATCH realiza actualizaciones parciales, mientras que PUT reemplaza el recurso entero
  • Las operaciones PATCH exitosas normalmente devuelven:
    • 200 OK con el recurso actualizado en el cuerpo de la respuesta
    • 204 No Content si la actualizació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 PATCH no son necesariamente idempotentes: hacer la misma solicitud varias veces puede tener efectos diferentes según la implementación