Programación con JavaScript: Peticiones a un servidor

El método fetch de JavaScript nos proporciona la funcionalidad necesaria para comunicarnos con servidores web directamente desde el navegador. Nos permite realizar todo tipo de peticiones HTTP (como obtener datos, enviar formularios, actualizar o eliminar información) de manera sencilla y eficiente.

Introducción

Lo que hace especial a fetch es su capacidad para trabajar con promesas, lo que permite manejar respuestas asíncronas del servidor de una manera más limpia y organizada. En esencia, fetch te permite solicitar recursos o enviar datos a un servidor y luego, una vez que la petición es procesada, trabajar con la respuesta, ya sea extrayendo su contenido en diferentes formatos (como texto o JSON) o manejando posibles errores que ocurran durante el proceso. Esta funcionalidad es crucial para el desarrollo de aplicaciones web modernas, donde la interacción constante con APIs y servicios externos es una práctica común para mostrar datos dinámicos, realizar actualizaciones en tiempo real y mejorar la experiencia del usuario en la web.

Para usar la función fetch en JavaScript y hacer peticiones a un servidor, primero necesitas entender qué es y cómo funciona. La función fetch nos permite realizar peticiones HTTP (como GET, POST, PUT, y DELETE) a un servidor desde un navegador web. Esta función devuelve una promesa que se resuelve con el objeto de respuesta del servidor, permitiéndote luego manipular esta respuesta, ya sea extrayendo el cuerpo de la misma en el formato deseado (como texto, JSON, etc.) o manejando errores.

Realizar una petición básica con fetch

Para hacer una petición GET simple, puedes utilizar fetch con la URL del recurso que deseas obtener.

fetch('https://api.example.com/data')
  .then(response => response.json()) // Convierte la respuesta a JSON
  .then(data => console.log(data)) // Maneja los datos de la respuesta
  .catch(error => console.error('Hubo un error:', error)); // Maneja los errores

En este caso, fetch('https://api.example.com/data') realiza una petición GET a la URL proporcionada. La función .then(response => response.json()) recoge la respuesta HTTP y la convierte a JSON. Luego, otro .then recibe esos datos ya procesados y, por ejemplo, los imprime en la consola. Finalmente, .catch captura cualquier error que pueda ocurrir durante la petición o procesamiento de la respuesta.

Enviar una petición con método POST

Para enviar datos a un servidor, como un formulario o información en formato JSON, puedes utilizar el método POST.

fetch('https://api.example.com/submit', {
  method: 'POST', // Método HTTP
  headers: {
    'Content-Type': 'application/json', // Indica el tipo de contenido que se está enviando
  },
  body: JSON.stringify({
    name: 'Usuario',
    message: 'Hola, mundo'
  }) // Datos que se envían convertidos a cadena JSON
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Hubo un error:', error));

Aquí, el segundo argumento de fetch es un objeto que configura la petición, especificando el método HTTP (method: 'POST'), los encabezados (headers) para indicar el tipo de contenido que se está enviando, y el cuerpo de la petición (body), que contiene los datos enviados al servidor. Los datos deben ser una cadena JSON, por lo que se utiliza JSON.stringify para convertir un objeto JavaScript a esta cadena.

Control de errores y respuestas erróneas

Es importante manejar correctamente los errores y las respuestas que no indican éxito (como un estado 404 o 500). Puedes hacerlo verificando el estado de la respuesta.

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('Hubo un problema con tu petición:', error));

En este ejemplo, if (!response.ok) verifica si el estado de la respuesta no indica éxito, lanzando un error si es necesario. Esto permite que el .catch posterior maneje tanto errores de red como respuestas no exitosas.

Conclusión

La función fetch es una herramienta poderosa y flexible para realizar peticiones HTTP en aplicaciones web modernas. Permite un control detallado sobre las peticiones y respuestas, facilitando el trabajo con APIs y servicios web. Practica con ejemplos y variaciones de estos para familiarizarte completamente con su funcionamiento y capacidades.