CursosEmpresasBlogLiveConfPrecios

Migración a Axios

Clase 7 de 17 • Curso de API REST con Javascript: Ejemplos con APIs reales

Clase anteriorSiguiente clase

Contenido del curso

Presentación del proyecto: PlatziMovies

  • 1
    TheMovieDB: análisis de su API

    TheMovieDB: análisis de su API

    07:15 min
  • 2
    Bocetos en papel y diseño en Figma

    Bocetos en papel y diseño en Figma

    08:05 min

Configuración inicial y maquetación del proyecto

  • 3
    Configuración del entorno de desarrollo

    Configuración del entorno de desarrollo

    16:53 min
  • 4
    Maquetación del proyecto: HTML y CSS

    Maquetación del proyecto: HTML y CSS

    18:34 min

Consumiendo la API

  • 5
    Lista de películas en tendencia

    Lista de películas en tendencia

    16:41 min
  • 6
    Lista de categorías

    Lista de categorías

    10:32 min
  • 7
    Migración a Axios

    Migración a Axios

    Viendo ahora

Navegación

  • 8
    Location y hash navigation

    Location y hash navigation

    17:17 min
  • 9
    Mostrando y ocultando secciones

    Mostrando y ocultando secciones

    22:05 min
  • 10
    Error: carga duplicada de datos

    Error: carga duplicada de datos

    06:30 min

Views

  • 11
    Filtrando películas por categoría

    Filtrando películas por categoría

    21:38 min
  • 12
    Retos: scrollTop y DRY

    Retos: scrollTop y DRY

    11:13 min
  • 13
    Buscador de películas

    Buscador de películas

    11:10 min
  • 14
    Retos: historial de navegación y página de tendencias

    Retos: historial de navegación y página de tendencias

    06:19 min
  • 15
    Endpoint de detalles de una película

    Endpoint de detalles de una película

    18:55 min
  • 16
    Lista de películas recomendadas

    Lista de películas recomendadas

    07:36 min

Próximos pasos

  • 17
    Toma el Curso Profesional de Consumo de API REST con JavaScript

    Toma el Curso Profesional de Consumo de API REST con JavaScript

    02:19 min
  • Tomar el examen del curso
    • Javier Andrés Valdez González

      Javier Andrés Valdez González

      student•
      hace 4 años

      Al principio no comprendía el porqué encerrábamos a data entre unas llaves.

      const {data} = await api("trending/movie/day");

      Después de buscar en la documentación de axios entendí que “api” regresa un objeto con estas propiedades y que podemos usarlas u omitirlas, en este caso solo usamos data, pero también puede sernos útil status para alguna validación posterior.

      Espero que les sea útil 😁.

        Marvin Orlando Ruiz Rivera

        Marvin Orlando Ruiz Rivera

        student•
        hace 3 años

        Justo lo que me preguntaba, gracias por la respuesta.

        Ricardo Adrian Justo Condori

        Ricardo Adrian Justo Condori

        student•
        hace 3 años

        Buen aporte

      Juan Sebastian Espínola

      Juan Sebastian Espínola

      student•
      hace 4 años

      En mi caso también estoy siguiendo los cursos de Juan de React así que estoy haciendo el proyecto con React Cree este custom hook para poder hacer request a distintas APIs. Por el momento lo llevo así, seguramente tenga que añadirle más métodos en un futuro y modificar un poco la creación de la instancia para que se puedan poner más configs ¿Ustedes qué opinan? :thinking: .

      useAPI Custom Hook

        Patricio Nally

        Patricio Nally

        student•
        hace 4 años

        Como hacés esa imagen bro? Gracias.

        Dario Paladines

        Dario Paladines

        student•
        hace 4 años

        Es una extensión de VSC, Patricio, la que yo uso se llama Carbon y de ahí ya configuras lo demás.

      Roger Fernandes

      Roger Fernandes

      student•
      hace 3 años

      He estado buscando como poner el parámetro de idioma con axios y encontré:

      "language": "es-ES"

      El código final quedo así:

      const api = axios.create({ baseURL: 'https://api.themoviedb.org/3/', headers: { 'Content-Type': 'application/json;charset=utf-8', }, params: { 'api_key': API_KEY, "language": "es-ES" }, });
        Jose Luis Bedoya

        Jose Luis Bedoya

        student•
        hace 3 años

        los elementos dentro de los parametros pueden ir sin las comillas!

      Julian Franco

      Julian Franco

      student•
      hace 4 años

      Buenas tardes.

      Aqui tienen que tener en cuenta que si usan axios instalandolo como paquete de NodeJS y usandolo de la siguiente manera les va a generar un error:

      Uncaught ReferenceError: require is not defined at
      const axios = require('axios').default;

      Pero porque pasa esto ? Recordemos que:

      require no es una función integrada en el navegador. Esa es una característica específica de node.js, no de un navegador. y recordemos que node.js es un un entorno de ejecución de Javascript del lado del servidor; Entonces, cuando intentamos que el navegador ejecute nuestro script este no lo encuentra.

      Por ahora no soy muy experto en el tema y no he encontrado una solución como bien dije por ahora; más que relizarlo como lo realiza el profesor. No se si un trasnpilador como babel nos permita usar dicha funcionalidad si el profesor o alguien más que lea este comentario sabe un poco más, agradezco siempre toda la información

        Juan Castro

        Juan Castro

        teacher•
        hace 4 años

        En este caso podrías usar la sintaxis de módulos de ECMAScript 6:

        • https://platzi.com/clases/1815-ecmascript-6/25946-clases-modulos-y-generadores/
        • https://platzi.com/clases/2332-javascript-poo/38627-modulos-de-ecmascript-6/
        Carlos Rodríguez

        Carlos Rodríguez

        student•
        hace 4 años

        Puedes usar desde tu HTML el siguiente script si lo tienes instalado con npm:

        <script src="./node_modules/axios/dist/axios.min.js"></script>

        Desde ModuleES no es posible ya que ellos en su código solo utilizan module.exports, yo recomiendo usar el cdn para proyectos frontend en el navegador.

      Cayo Legal

      Cayo Legal

      student•
      hace 4 años

      Cual es la diferencia entre params y headers?

        Eloy Chávez Dev

        Eloy Chávez Dev

        student•
        hace 4 años

        Hiii 👋🏻

        Parameters can be seen by end-users (in URL), but headers are hidden to end-users.

        Juan Castro

        Juan Castro

        teacher•
        hace 4 años

        Los params son los query parameters. Van directo en la URL. Los headers son las cabeceras de la petición. No van directo en la URL.

      Axel Enrique Galeed Gutierrez

      Axel Enrique Galeed Gutierrez

      student•
      hace 3 años

      Les comparto mis apuntes. :D

      Crear una instancia en Axios

      Para poder crear una instancia de axios para poder realizar peticiones a nuestra API.

      axios.create

      Este método nos permite realizar peticiones GET y tenemos que pasarle una serie de parámetros en forma de objeto para poder utilizarlo.

      baseURL

      Como su nombre lo dice, es la base de la URL de nuestra API, en todas hay una URL que es común para cualquier tipo de petición, lo única que cambian son sus endpoints o query parameters.

      Ejemplo

      // URL base https://api.themoviedb.org/3/ // Endpoints https://api.themoviedb.org/3/trending/movie/day/ https://api.themoviedb.org/3/genre/movie/list/ // Query parameters https://api.themoviedb.org/3/trending/movie/day?api_key=${API_KEY}

      headers

      “Son las cabeceras personalizadas a ser enviadas”. Los headers no van directos en la URL.

      Fuente: página oficial de Axios.

      params

      Son los parámetros que le pasamos a la URL, es decir, los query parameters que van directo en la URL base que hemos asignado.

      Uso

      Una vez generada la instancia con todo lo que necesitamos solo nos queda llamar a nuestra instancia pasándole como parámetro el endpoint a donde queremos ingresar.

      Ejemplo

      const api = axios.create({ baseURL : 'URL', headers : { 'Content-Type' : 'application/json;charset=utf-8' }, params : { api_key : API_KEY } }); const RESPONSE = await api(endpoint)

      Pueden ver más parámetros del método create en la página oficial de Axios.

      Comparación de peticiones GET con fetch y Axios.

      Petición GET con fetch

      const getTrendingMoviesPreview = async () => { const RESPONSE = await fetch(`${API}/trending/movie/day?${API_KEY_URL}`); const DATA = await RESPONSE.json(); const MOVIES = DATA.results; return MOVIES; }; const API_KEY_URL = `api_key=${API_KEY}`; const API = 'https://api.themoviedb.org/3';

      Petición GET con Axios

      const getTrendingMoviesPreview = async () => { const RESPONSE = await api(`trending/movie/day`); const DATA = RESPONSE.data; const MOVIES = DATA.results; return MOVIES; }; const api = axios.create({ baseURL : 'https://api.themoviedb.org/3/', headers : { 'Content-Type' : 'application/json;charset=utf-8' }, params : { api_key : API_KEY } });
      Bryan David Castañeda Aranzales

      Bryan David Castañeda Aranzales

      student•
      hace 4 años

      Si instale por npm axios, como hago para usarlo sin necesidad de traer el CDN?

        Juan Castro

        Juan Castro

        teacher•
        hace 4 años

        Cualquiera de estas dos formas:

        const axios = require('axios').default; import axios from 'axios';

        Recuerda que siempre puedes ver toda esta información en la documentación.

        Enrique Maya Garcia

        Enrique Maya Garcia

        student•
        hace 3 años

        con este paquete https://browserify.org/

      Ricardo Adrian Justo Condori

      Ricardo Adrian Justo Condori

      student•
      hace 3 años

      Tengo un par de preguntas:

      • Aparte de tener un código más limpio, ¿Qué otro beneficio tiene usar Axios en lugar de Fetch?

      • ¿En qué casos debo usar Fetch y en que casos Axios?

        Edgardo Andres Vargas Saenz

        Edgardo Andres Vargas Saenz

        student•
        hace 3 años

        Hola ricardojusto, son muchas las ventajas.

        • Encontré 2 artículos que te pueden interesar:
          • Por qué los desarrolladores de JavaScript deberían preferir Axios a Fetch
          • Axios Javascript: analizamos las características de este ligero cliente HTTP
        Ricardo Adrian Justo Condori

        Ricardo Adrian Justo Condori

        student•
        hace 3 años

        Gracias EdgardoAVS por el aporte

      Fernando Orozco Velasquez

      Fernando Orozco Velasquez

      student•
      hace 3 años

      Recuerden que como programadores no tenemos que "casarnos" con una sola forma de hacer que funcione nuestro código,


      Esta bien saber Axios pero es SUPER recomendable entender como funciona el "fetch()" internamente así como las promesas y un "XMLHttpRequest" (aunque ese se vea feo imo 😅)

        Henry Alexander Velásquez Rosas

        Henry Alexander Velásquez Rosas

        student•
        hace 2 años

        Me parece que se usa igual o muy similar a como se haría un fetch con módulos. Creo que prefiero trabajar todo separado con módulos.

      Enrique Maya Garcia

      Enrique Maya Garcia

      student•
      hace 3 años

      para poder utilizar require en tu proyecto de js en el navegador, puedes integrar este paquete de forma global https://browserify.org/

      Ricardo Alfonso Chavez Vilcapoma

      Ricardo Alfonso Chavez Vilcapoma

      student•
      hace 3 años
      XSS.PNG
      Federico Maidana

      Federico Maidana

      student•
      hace 3 años

      Consulta, quiero cambiar el nombre de: {data} por cualquier otro nombre. Y resulta que de esa forma no me muestra los datos de la api. Me sale un error que dice que el nombre de {dataAlgo} no está definido. Alguien tiene idea de por qué ? O como solucionarlo ?

        Juan Castro

        Juan Castro

        teacher•
        hace 3 años

        Porque en ese objeto esa propiedad se llama data, no dataAlgo. Si quieres renombrarla tiene que ser con esta sintaxis: { data: dataAlgo }. :wink:

        Federico Maidana

        Federico Maidana

        student•
        hace 3 años

        Al final, le puse un nombre random y para acceder a la info escribía: (dataAlgo.data.etc). Pero tu solución es más elegante jajaja, así que ahora lo cambio. Gracias Juan.

      yamil R llaver muza

      yamil R llaver muza

      student•
      hace 4 años

      Como explica mi amigo personal Juan !!! 😀

      Esteban Santiago Pizzani

      Esteban Santiago Pizzani

      student•
      hace 3 años

      Siempre recuerden de cambiar el "await fetch" por un "await api" (o la variable que ustedes hayan usado para almacenar el axios.create) para que les funcione todo bien.

      Juan Pablo Lopez Ramirez

      Juan Pablo Lopez Ramirez

      student•
      hace 3 años

      Juanda una pregunta, seria buena ida aprender axios? y se requiere mucho para aprender lo " importante" o es facil. gracias

        Juan Castro

        Juan Castro

        teacher•
        hace 3 años

        Si ya dominas fetch, axios es pan comido y una sintaxis preciosa. Yo digo que vale la pena. Y no te demoras mucho. :D

      Patricio Nally

      Patricio Nally

      student•
      hace 4 años

      Al usar Axios si al script lo ponemos al final del head del html, tiene mejor rendimiento que al final del body. Yo lo uso así y logro un mejor resultado. Saludos 😀

        Ricardo Alfonso Chavez Vilcapoma

        Ricardo Alfonso Chavez Vilcapoma

        student•
        hace 3 años

        ¿Por qué?

      Paulo Sebastián Vaccaro Hernández

      Paulo Sebastián Vaccaro Hernández

      student•
      hace 3 años

      te amo juandc xdddd

      Juan David Moreno Rodriguez

      Juan David Moreno Rodriguez

      student•
      hace 3 años

      amado seas axios :v

      Victor Hugo Cruz Carballo

      Victor Hugo Cruz Carballo

      student•
      hace 3 años

      configuracion de axios:

      const api = axios.create({ baseURL : 'https://api.themoviedb.org/3/', headers: { 'Content-Type': 'application/json; charset=utf-8', }, params: { 'api_key': API_KEY, }, });
      Dario Mendoza

      Dario Mendoza

      student•
      hace 3 años

      El código con comentario

      code.png
      i lo necesitas en texto, dímelo 🙌

    Escuelas

    • Desarrollo Web
      • Fundamentos del Desarrollo Web Profesional
      • Diseño y Desarrollo Frontend
      • Desarrollo Frontend con JavaScript
      • Desarrollo Frontend con Vue.js
      • Desarrollo Frontend con Angular
      • Desarrollo Frontend con React.js
      • Desarrollo Backend con Node.js
      • Desarrollo Backend con Python
      • Desarrollo Backend con Java
      • Desarrollo Backend con PHP
      • Desarrollo Backend con Ruby
      • Bases de Datos para Web
      • Seguridad Web & API
      • Testing Automatizado y QA para Web
      • Arquitecturas Web Modernas y Escalabilidad
      • DevOps y Cloud para Desarrolladores Web
    • English Academy
      • Inglés Básico A1
      • Inglés Básico A2
      • Inglés Intermedio B1
      • Inglés Intermedio Alto B2
      • Inglés Avanzado C1
      • Inglés para Propósitos Específicos
      • Inglés de Negocios
    • Marketing Digital
      • Fundamentos de Marketing Digital
      • Marketing de Contenidos y Redacción Persuasiva
      • SEO y Posicionamiento Web
      • Social Media Marketing y Community Management
      • Publicidad Digital y Paid Media
      • Analítica Digital y Optimización (CRO)
      • Estrategia de Marketing y Growth
      • Marketing de Marca y Comunicación Estratégica
      • Marketing para E-commerce
      • Marketing B2B
      • Inteligencia Artificial Aplicada al Marketing
      • Automatización del Marketing
      • Marca Personal y Marketing Freelance
      • Ventas y Experiencia del Cliente
      • Creación de Contenido para Redes Sociales
    • Inteligencia Artificial y Data Science
      • Fundamentos de Data Science y AI
      • Análisis y Visualización de Datos
      • Machine Learning y Deep Learning
      • Data Engineer
      • Inteligencia Artificial para la Productividad
      • Desarrollo de Aplicaciones con IA
      • AI Software Engineer
    • Ciberseguridad
      • Fundamentos de Ciberseguridad
      • Hacking Ético y Pentesting (Red Team)
      • Análisis de Malware e Ingeniería Forense
      • Seguridad Defensiva y Cumplimiento (Blue Team)
      • Ciberseguridad Estratégica
    • Liderazgo y Habilidades Blandas
      • Fundamentos de Habilidades Profesionales
      • Liderazgo y Gestión de Equipos
      • Comunicación Avanzada y Oratoria
      • Negociación y Resolución de Conflictos
      • Inteligencia Emocional y Autogestión
      • Productividad y Herramientas Digitales
      • Gestión de Proyectos y Metodologías Ágiles
      • Desarrollo de Carrera y Marca Personal
      • Diversidad, Inclusión y Entorno Laboral Saludable
      • Filosofía y Estrategia para Líderes
    • Diseño de Producto y UX
      • Fundamentos de Diseño UX/UI
      • Investigación de Usuarios (UX Research)
      • Arquitectura de Información y Usabilidad
      • Diseño de Interfaces y Prototipado (UI Design)
      • Sistemas de Diseño y DesignOps
      • Redacción UX (UX Writing)
      • Creatividad e Innovación en Diseño
      • Diseño Accesible e Inclusivo
      • Diseño Asistido por Inteligencia Artificial
      • Gestión de Producto y Liderazgo en Diseño
      • Diseño de Interacciones Emergentes (VUI/VR)
      • Desarrollo Web para Diseñadores
      • Diseño y Prototipado No-Code
    • Contenido Audiovisual
      • Fundamentos de Producción Audiovisual
      • Producción de Video para Plataformas Digitales
      • Producción de Audio y Podcast
      • Fotografía y Diseño Gráfico para Contenido Digital
      • Motion Graphics y Animación
      • Contenido Interactivo y Realidad Aumentada
      • Estrategia, Marketing y Monetización de Contenidos
    • Desarrollo Móvil
      • Fundamentos de Desarrollo Móvil
      • Desarrollo Nativo Android con Kotlin
      • Desarrollo Nativo iOS con Swift
      • Desarrollo Multiplataforma con React Native
      • Desarrollo Multiplataforma con Flutter
      • Arquitectura y Patrones de Diseño Móvil
      • Integración de APIs y Persistencia Móvil
      • Testing y Despliegue en Móvil
      • Diseño UX/UI para Móviles
    • Diseño Gráfico y Arte Digital
      • Fundamentos del Diseño Gráfico y Digital
      • Diseño de Identidad Visual y Branding
      • Ilustración Digital y Arte Conceptual
      • Diseño Editorial y de Empaques
      • Motion Graphics y Animación 3D
      • Diseño Gráfico Asistido por Inteligencia Artificial
      • Creatividad e Innovación en Diseño
    • Programación
      • Fundamentos de Programación e Ingeniería de Software
      • Herramientas de IA para el trabajo
      • Matemáticas para Programación
      • Programación con Python
      • Programación con JavaScript
      • Programación con TypeScript
      • Programación Orientada a Objetos con Java
      • Desarrollo con C# y .NET
      • Programación con PHP
      • Programación con Go y Rust
      • Programación Móvil con Swift y Kotlin
      • Programación con C y C++
      • Administración Básica de Servidores Linux
    • Negocios
      • Fundamentos de Negocios y Emprendimiento
      • Estrategia y Crecimiento Empresarial
      • Finanzas Personales y Corporativas
      • Inversión en Mercados Financieros
      • Ventas, CRM y Experiencia del Cliente
      • Operaciones, Logística y E-commerce
      • Gestión de Proyectos y Metodologías Ágiles
      • Aspectos Legales y Cumplimiento
      • Habilidades Directivas y Crecimiento Profesional
      • Diversidad e Inclusión en el Entorno Laboral
      • Herramientas Digitales y Automatización para Negocios
    • Blockchain y Web3
      • Fundamentos de Blockchain y Web3
      • Desarrollo de Smart Contracts y dApps
      • Finanzas Descentralizadas (DeFi)
      • NFTs y Economía de Creadores
      • Seguridad Blockchain
      • Ecosistemas Blockchain Alternativos (No-EVM)
      • Producto, Marketing y Legal en Web3
    • Recursos Humanos
      • Fundamentos y Cultura Organizacional en RRHH
      • Atracción y Selección de Talento
      • Cultura y Employee Experience
      • Gestión y Desarrollo de Talento
      • Desarrollo y Evaluación de Liderazgo
      • Diversidad, Equidad e Inclusión
      • AI y Automatización en Recursos Humanos
      • Tecnología y Automatización en RRHH
    • Finanzas e Inversiones
      • Fundamentos de Finanzas Personales y Corporativas
      • Análisis y Valoración Financiera
      • Inversión y Mercados de Capitales
      • Finanzas Descentralizadas (DeFi) y Criptoactivos
      • Finanzas y Estrategia para Startups
      • Inteligencia Artificial Aplicada a Finanzas
      • Domina Excel
      • Financial Analyst
      • Conseguir trabajo en Finanzas e Inversiones
    • Startups
      • Fundamentos y Validación de Ideas
      • Estrategia de Negocio y Product-Market Fit
      • Desarrollo de Producto y Operaciones Lean
      • Finanzas, Legal y Fundraising
      • Marketing, Ventas y Growth para Startups
      • Cultura, Talento y Liderazgo
      • Finanzas y Operaciones en Ecommerce
      • Startups Web3 y Blockchain
      • Startups con Impacto Social
      • Expansión y Ecosistema Startup
    • Cloud Computing y DevOps
      • Fundamentos de Cloud y DevOps
      • Administración de Servidores Linux
      • Contenerización y Orquestación
      • Infraestructura como Código (IaC) y CI/CD
      • Amazon Web Services
      • Microsoft Azure
      • Serverless y Observabilidad
      • Certificaciones Cloud (Preparación)
      • Plataforma Cloud GCP

    Platzi y comunidad

    • Platzi Business
    • Live Classes
    • Lanzamientos
    • Executive Program
    • Trabaja con nosotros
    • Podcast

    Recursos

    • Manual de Marca

    Soporte

    • Preguntas Frecuentes
    • Contáctanos

    Legal

    • Términos y Condiciones
    • Privacidad
    • Tyc promociones
    Reconocimientos
    Reconocimientos
    Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
    Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
    Logo reconocimientoPrimera Startup EdTech · 2018
    Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
    Logo reconocimientoCEO Mejor Emprendedor del año · 2024
    De LATAM conpara el mundo
    YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads