//traemos a fetchDAta para usarlo
const fetchData = require('../utils/fetchData')
const API = '<https://rickandmortyapi.com/api/character/>'
/**1 peticion de el numero total de personajes
* 2 peticion del nombre del primer personaje
* 3 peticion de la dimension del primer personaje
*/
//esta es la peticion a la api asi como esta
fetchData(API)
.then(data => { //cuando la hace nos regresa un objeto data
console.log(data.info.count) //ese objeto lo desmenusamos en el log
return fetchData(`${API}${data.results[0].id}`) //retornamos otra peticion + un id
})
.then(data => { // este data contendra lo que se retorno en el anterior then, es decir el contenido de la peticion
console.log(data.name) // de lo obtenido imprime el name
return fetchData(data.origin.url) //hacemos fetch a una url que se encuentra dentro de data
})
.then(data => { //a lo obtenido se le da el nombre de data
console.log(data.dimension) //y de ello se toma este parametro para imprimirlo
})
//recuerda siempre manejar los errores
.catch(err => console.error(err))
//se haran peticiones usando los datos que tenga dentro la peticion anterior
/* Reto:
1. Crear una funcion que nos permita traer info desde la api
2. Le pasaremos un callback
3. Hacer el llamado de lo que necesitamos
*/
// to es6
//instanciamos las peticiones viejas
let XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest
//let API = '<https://rickandmortyapi.com/api/character/>'
//Funcion de consulta con promises en es6
const fetchData = (url_api) => {
//se declara pa promesa
return new Promise ((resolve, reject) => {
//crea un objeto con httprequest (porque no estamos trabajando en el navegador sino con el editor de texto)
const xhttp = new XMLHttpRequest()
xhttp.open('GET', url_api, true) //peticion
xhttp.onreadystatechange = (() => { //verifica cada evento de cambio
if (xhttp.readyState === 4) { //en state 4 se abre el siguiente paso
(xhttp.status === 200) //si es un 200 pasa lo siguiente
//es el resolve de la promesa de arriba
? resolve(JSON.parse(xhttp.responseText)) //se retorna la respuesta de la api
//es el reject de la promesa de arriba
: reject(new Error('Error', url_api)) //si no es 200 se retorna un error
}
})
//ahora se envia la peticion
xhttp.send()
})
}
//node aun usa commun JS por lo que no se puede usar import o export solamente como con babel
module.exports = fetchData