Configurar Trae con Fetch para peticiones HTTP

Clase 21 de 53Curso Profesional de Vue.js 2

Resumen

Domina peticiones HTTP modernas en JavaScript con Fetch API y la librería Trae. Aquí verás cómo instalar, configurar y usar servicios para centralizar llamadas a una API REST, implementar búsquedas de canciones con parámetros y escribir código claro con Promises y arrow functions.

¿Qué es Fetch API y por qué usar Trae?

La evolución natural de las peticiones HTTP pasó de XMLHttpRequest a Fetch. Sin embargo, no todos los browsers la soportan por completo. Por eso se recomienda Trae, una librería minimalista que actúa como wrapper de fetch y simplifica tareas comunes, evitando preocupaciones de compatibilidad y reduciendo código.

Puntos clave: - Trae funciona como intermediario de fetch y expone métodos HTTP simples. - Es agnóstica de framework: React, Angular, Vue o JavaScript puro. - Permite instancias con baseURL para no repetir rutas. - Facilita un flujo claro con Promises usando then y catch. - Fue creada por desarrolladores argentinos y el instructor contribuyó al proyecto.

¿Cómo instalar y configurar Trae con npm e imports ES6?

Instalación como dependencia de producción: el indicador -S guarda en dependencias.

npm i -S Trae

Configuración del servicio principal con ES6 imports y una baseURL centralizada en un servicio de configuración. Nota: si no usas ./ o ../ en el import, Webpack asume un paquete de NPM.

import Trae from 'Trae'
import ConfigService from './config'

const PlatziMusicService = Trae.create({
  baseURL: ConfigService.apiUrl
})

export default PlatziMusicService

Buenas prácticas destacadas: - Mantener la URL base en un archivo de configuración. - Cuidar la consistencia en nombres: por ejemplo, apiUrl con el mismo estilo en todo el proyecto. - Exportar por defecto el servicio para reutilizarlo.

¿Cómo crear servicios en JavaScript para una API con Trae?

La idea es centralizar llamadas en servicios específicos. Un servicio principal (Platzi Music) instancia Trae y otros servicios lo consumen. Si tuvieras otras APIs, como Twitter o GitHub, crearías un servicio por cada una.

Ejemplo: servicio de tracks que realiza búsquedas por canciones usando el endpoint /search de Platzi Music.

import PlatziMusicService from './platzi-music-service'

const TrackService = {}

TrackService.search = function (q) {
  const type = 'track' // la API permite distintos tipos; aquí se fija en canciones
  return PlatziMusicService.get('/search', {
    params: { q, type }
  }).then(res => res.data)
}

export default TrackService

Claves del código: - El método get recibe la ruta específica y un objeto con params para la query del método GET. - Se usan abreviaciones de ECMAScript 2015 en objetos: { q, type } en lugar de { q: q, type: type }. - Se devuelve la promesa para permitir la cadena de promesas, conocida como promise chain.

¿Cómo manejar Promises y encadenamiento then/catch?

Las Promises ofrecen un flujo legible para asincronía con then (éxito) y catch (error). Al devolver la promesa, otros componentes o servicios pueden encadenar más operaciones.

Además, las arrow functions ayudan a: - Escribir funciones más breves. - Mantener el valor léxico de this. - Omitir return y llaves en funciones de una sola línea.

Ejemplo de refactor con función flecha en then:

return PlatziMusicService
  .get('/search', { params: { q, type } })
  .then(res => res.data)

¿Qué métodos HTTP ofrece Trae como wrapper de fetch?

Trae expone los métodos básicos, que son wrappers de fetch para interactuar con una API REST: - get: lee recursos. - post: crea recursos. - put: actualiza recursos. - delete: elimina recursos.

¿Qué buenas prácticas y conceptos clave debes recordar?

Una guía rápida para aplicar de inmediato: - Fetch API y compatibilidad: usa Trae como wrapper para evitar problemas de soporte. - Instancias con baseURL: configura una vez y evita repetir rutas. - Servicios por dominio: centraliza la lógica de cada API en su propio servicio. - Búsquedas con query params: usa q para la búsqueda y type con valor fijo track cuando solo quieras canciones. - Endpoint /search: accede al recurso de búsqueda pasando parámetros en params. - Promises y then/catch: devuelve la promesa para mantener la cadena y manejar resultados con then. - ECMAScript 2015: aprovecha abreviaciones de objetos y arrow functions para legibilidad. - Imports ES6: sin ./ indica paquete de NPM; con ./ importas archivos locales. - Export default: facilita el uso del servicio en otros módulos.

¿Te gustaría que veamos cómo integrar este TrackService con tus componentes y patrones de UI? Comparte tus dudas o tu caso y lo revisamos juntos.