Contenido

    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.

    428 - Precondition Required

    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

    1. 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.');
          }
      });
              
    2. 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.')
              
    3. 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.