HTTP PATCH
HTTP PATCH
Sección titulada «HTTP PATCH»Tipo: http-patch · Paquete: HTTP Activities v1.0.5 · Salida: ZoanHttpResponse
Envía una petición PATCH para actualizar parcialmente un recurso: solo mandas los campos que cambian, no el objeto completo. Es la forma más cómoda de modificar un dato puntual — cambiar un estado, actualizar un teléfono — sin reenviar todo el registro.
Cómo funciona
Sección titulada «Cómo funciona»Igual que PUT, pero envías solo los campos a modificar en el body. La API actualiza esos campos y deja el resto intacto. Devuelve un ZoanHttpResponse.
- Cuerpo: con el
contentTypepor defecto (application/json) elbodyse convierte a JSON; con otrocontentType(por ejemploapplication/merge-patch+jsonoapplication/json-patch+json, si la API lo exige) se envía como texto, así que en ese caso pásalo ya serializado contoJson(cambios). Ver cuerpo y Content-Type. - Códigos de respuesta: con 2xx termina bien; cualquier otro código hace fallar la actividad — ver qué códigos hacen fallar la actividad.
- Tiempos: 30 s para conectar y, por defecto, 5 min para la petición completa (parámetro
timeout). Si se agotan, la actividad falla con un error normal que Try / Catch y Retry capturan — ver tiempos de espera.
Parámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
url | string | — | URL absoluta del recurso a actualizar. |
body | object | — | Solo los campos que cambian: diccionario (→ JSON) o texto (para otros contentType). Con contentType JSON, un texto se envía como cadena JSON; si tienes JSON en un texto, usa parseJson(texto). |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
contentType | string | "application/json" | Tipo de medio del cuerpo, sin parámetros. Solo los valores que contienen application/json convierten el body a JSON. charset=utf-8 se agrega solo. |
headers | Dictionary | — | Cabeceras extra (nombre → valor), en el editor JSON. Las cabeceras de contenido se ignoran. Ver cabeceras. |
authorization | Dictionary | — | Autenticación en el editor JSON: bearer, basic o apikey. Ver autenticación. |
timeout | int | 300 | Segundos que se espera la petición completa (conexión, envío y respuesta); máximo 3600, admite decimales (0.5). Desde la versión 1.0.5. Ver tiempos de espera. |
Devuelve un ZoanHttpResponse con .StatusCode (2xx, típicamente 200 o 204), .Ok (siempre true en una salida recibida), .Body (muchas APIs devuelven el recurso ya actualizado; JSON → diccionario/lista, otra cosa → texto, vacío → "") y .Headers.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa y solución |
|---|---|
El servidor respondió HTTP 422 (Unprocessable Entity) a la solicitud PATCH. | El servidor respondió con un código fuera de 2xx (422/400 datos inválidos, 404, 405 si la API no admite PATCH, 5xx). Maneja los esperables con Try / Catch. |
The format of value 'application/json; charset=utf-8' is invalid. | contentType lleva parámetros. Deja solo el tipo de medio. |
No such host is known. (u otro error de red del sistema) | No hubo respuesta. error.Type es "HttpRequestException". |
La solicitud PATCH a api.ejemplo.com no terminó en 300 s (tiempo de espera agotado). Sube «Tiempo de espera» si el servicio tarda más. | El servidor no respondió dentro de timeout. error.Type es \"TimeoutException\": captúralo con Try / Catch o reintenta con Retry; si la API tarda por naturaleza, sube timeout. Si el fallo es al conectar, el mensaje dice No se pudo conectar con … en 30 s. |
An invalid request URI was provided. Either the request URI must be an absolute URI or BaseAddress must be set. | La url no es absoluta. Incluye https://. |
'url' es obligatorio. | La expresión de url dio nulo. |
Ejemplo
Sección titulada «Ejemplo»Cambiar solo el estado de un pedido y leer el estado que confirma la API:
HTTP PATCH url = "https://api.erp.com/pedidos/" + pedidoId body = new Dictionary<string, object> { ["estado"] = "despachado" } authorization = { "type": "bearer", "token": credential("api-erp")["value"] } → output: resp
Log message = "Pedido " + pedidoId + " ahora está: " + resp.Body["estado"]