Respuesta del servidor 428 Precondition Required
Código de estado HTTP 428 (Precondition Required)
El código de estado HTTP 428 se utiliza para indicar que el servidor exige que se cumplan ciertas condiciones antes de procesar la solicitud. Este código se presenta a menudo en interacciones con APIs, donde es crucial considerar los estados previos de los recursos.
Ejemplos de uso y aparición del estado 428
-
Cambio de recursos
Un cliente intenta actualizar un recurso, pero no proporciona las condiciones necesarias para que dicha actualización se lleve a cabo.
Por ejemplo, si un recurso ha sido modificado por otro cliente, el servidor puede optar por no ejecutar la solicitud si no se han especificado las condiciones requeridas.
-
Control de versiones
Cuando se intenta eliminar o modificar un recurso, el cliente debe indicar que está trabajando con la versión actual del recurso, utilizando un encabezado como
If-Match
.El estado 428 puede ser devuelto si el cliente no proporciona el encabezado necesario para verificar la versión del recurso.
-
Cacheo y estados
Un cliente solicita datos que pueden haber cambiado, pero no menciona que está listo para trabajar solo con información actualizada, como lo haría con el encabezado
If-None-Match
.En este caso, el servidor puede requerir condiciones para evitar proporcionar información desactualizada.
Ejemplos prácticos de corrección del error 428 en diferentes lenguajes de programación
-
JavaScript (usando Fetch API)
const url = 'https://api.example.com/resource'; const headers = new Headers({ 'If-Match': 'etag_value' // Proporciona el ETag para verificar la versión }); fetch(url, { method: 'PUT', headers: headers, body: JSON.stringify({ data: 'new data' }) }) .then(response => { if (response.status === 428) { console.error('Se requieren condiciones para realizar la solicitud.'); } });
-
Python (usando requests)
import requests url = 'https://api.example.com/resource' headers = { 'If-Match': 'etag_value' # Proporciona el ETag para verificar la versión } response = requests.put(url, headers=headers, json={'data': 'new data'}) if response.status_code == 428: print('Se requieren condiciones para realizar la solicitud.')
-
PHP
$url = 'https://api.example.com/resource'; $options = [ 'http' => [ 'header' => "If-Match: etag_value\r\n", // Proporciona el ETag para verificar la versión 'method' => 'PUT', 'content' => json_encode(['data' => 'new data']), ], ]; $context = stream_context_create($options); $result = file_get_contents($url, false, $context); if ($http_response_header[0] === 'HTTP/1.1 428 Precondition Required') { echo 'Se requieren condiciones para realizar la solicitud.'; }
Tabla de condiciones requiridas y sus encabezados
Condición | Encabezado Requerido | Descripción |
---|---|---|
Verificación de versiones | If-Match | Utilizado para confirmar que se está trabajando con la versión actual del recurso. |
Datos actualizados | If-None-Match | Verifica que el cliente está dispuesto a trabajar solo con datos que no han cambiado. |
En esta exposición, se han abordado los aspectos fundamentales del uso del código de estado HTTP 428, sus ejemplos prácticos y las formas de corregir posibles errores en el código a través de diferentes lenguajes de programación.