Apoyo Lectura - AJAX y Consumo de APIs Desde El Cliente
Apoyo Lectura - AJAX y Consumo de APIs Desde El Cliente
Apoyo Lectura - AJAX y Consumo de APIs Desde El Cliente
desde el cliente _
¿Qué aprenderemos?
Esta unidad estará dividida en dos diferentes capítulos, con tal de avanzar progresivamente sobre
los conceptos necesarios para comprender los conceptos involucrados en la tecnología AJAX y
cómo utilizarla para consumir información desde una API:
● La tecnología AJAX
● Consumir datos de una API usando AJAX
Conceptos claves
● Asincronía
● AJAX
● Petición
● Promesa
● Evento
La tecnología AJAX
La tecnología AJAX
● Una petición AJAX puede ir con información asociada, dentro del cuerpo de la petición.
● Esta información puede estar en 3 diferentes formatos:
○ Texto plano
○ URL codificada
○ JSON
{
"catalog": [
Ejemplo de formato {
"title": "Empire Burlesque",
JSON "artist": "Bob Dylan",
"country": USA,
"company": "Columbia",
"price": 10.90,
"year": 1985
},
{
"title": "Hide your heart",
"artist": "Bonnie Tyler",
"country": UK,
"company": "CBS Records",
"price": 9.90,
"year": 1988
}
]
}
La tecnología AJAX
<script>
// Usando Vanilla Javascript
var div = document.querySelector('#identificador');
div.addEventListener('click', function(){
alert('Hiciste click sobre alguna parte del texto!');
});
</script>
Mal uso de manejadores de eventos
<ol>
<li class="elemento">Primer elemento</li>
<li class="elemento">Segundo elemento</li>
<li class="elemento">Tercer elemento</li>
</ol>
<script>
var elementos = document.querySelectorAll('.elemento');
elementos.forEach(function(elemento, i){
elemento.addEventListener('click', function(){
alert('Información adicional del elemento '+(i+1));
});
});
</script>
Mal uso de manejadores de eventos
var li = document.createElement('li');
li.appendChild(document.createTextNode('Nuevo elemento'));
document.querySelector('ol').appendChild(li);
</script>
Ciclo de vida de un evento en Javascript
Ejemplo de la fase de burbujeo
<style>
body * {
margin: 10px;
border: 1px solid blue;
}
</style>
var li = document.createElement('li');
li.appendChild(document.createTextNode('Nuevo elemento'));
lista.appendChild(li);
</script>
Objeto XMLHttpRequest
● Objeto Javascript que puede ser utilizado para realizar peticiones AJAX
● A pesar de su nombre, puede ser utilizado para recibir información en diferentes formatos
como:
○ Texto plano
○ XML
○ JSON
Pasos para utilizar un objeto XMLHttpRequest
● 0 indica que la petición no ha sido inicializada. Esto implica que sólo se ha creado el objeto
XMLHttpRequest, pero no se han establecido los parámetros de conexión a través del método
open.
● 1 indica que la conexión con el servidor ya ha sido establecida. Este es el estado posterior a
la ejecución del método open.
● 2 indica que la petición fue recibida por el servidor.
● 3 indica que la petición está siendo procesada por el servidor.
● 4 indica que la petición ha finalizado y que la respuesta está lista para ser procesada
Consumir datos de una API usando
AJAX
API REST
● La librería jQuery posee un método que simplifica y extiende el uso del objeto
XMLHttpRequest
● $.ajax
● Es necesario incorporar jQuery como dependencia para usar este método
Ejemplo del método $.ajax
$.ajax('https://pokeapi.co/api/v2/pokemon/charmander/', {
success: function(data) {
console.log(data);
}
});
Ejemplo del método $.ajax con uso de callbacks
$.ajax('https://pokeapi.co/api/v2/pokemon/charmand/', { // Se
introduce un error en la URL
success: function(data) {
console.log(data.abilities.length);
},
error: function(error) {
if(error.status == 404) {
console.log('El recurso solicitado no existe');
}
}
});
Ejemplo del método $.ajax con métodos encadenados
$.ajax('https://pokeapi.co/api/v2/pokemon/charmander/')
.done(function(data){
console.log(data.abilities.length);
})
.fail(function(error){
if(error.status == 404) {
console.log('El recurso solicitado no existe');
}
});
El objeto Promise
fetch('https://pokeapi.co/api/v2/pokemon/charmander/')
Opciones de configuración de Fetch API
fetch(url, {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache,
only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
'Content-Type': 'application/json' // También puede ser
'application/x-www-form-urlencoded'
},
redirect: 'follow', // manual, *follow, error
referrer: 'no-referrer', // no-referrer, *client
body: JSON.stringify(data)
});
Resolución de una promesa
fetch('https://pokeapi.co/api/v2/pokemon/charmander/')
.then(function(data){
console.log(data);
});
Métodos para obtener la información de un objeto
Response
● json()
● text()
● blob()
● formData()
Pasos para resolver una promesa
1. Resolver el objeto Response obtenido desde la invocación del método fetch con alguno de
los métodos anteriores.
2. Procesar la información resuelta desde el objeto Response.
fetch('https://pokeapi.co/api/v2/pokemon/charmander/')
.then(function(response){
return response.json();
})
.then(function(data){
console.log(data);
});
www.desafiolatam.com