En este artículo, vamos a crear un gráfico simple obteniendo datos JSON usando el método Fetch() de Fetch API. La API Fetch nos permite realizar requests HTTP de una manera más sencilla.
El método fetch(): el método fetch obtiene un recurso y devuelve una promesa que se cumple una vez que la respuesta está disponible.
Sintaxis:
const response = fetch(resource [, init])
Parámetros:
- recurso: la ruta del recurso (también puede ser un archivo local)
- init: cualquier otra opción que desee agregar, como encabezados, cuerpo, método, etc.
Enfoque: Los pasos se pueden describir de la siguiente manera:
Paso 1: el primer paso es llamar a la función de búsqueda especificando la ruta del recurso. En este ejemplo, usaremos el recurso gratuito de la URL de la siguiente manera:
“https://datausa.io/api/data?drilldowns=Nation&measures=Population
Contiene la población de los EE. UU. en diferentes años. El objeto Respuesta se muestra a continuación:
Respuesta {
tipo: «cors»,
URL: «https://datausa.io/api/data?drilldowns=Nation&measures=Population»,
redirigido: falso,
estado: 200,
ok: verdadero,
texto de estado: «OK»,
encabezados: Encabezados,
cuerpo: ReadableStream,
bodyUsed: true
}
body: ReadableStream { bloqueado: true }
bodyUsed: true
headers: Headers { }
ok: true
redirigido: false
status: 200
statusText: «OK»
type: «cors»
url: «https: //datausa.io/api/data?drilldowns=Nation&measures=Population”
<prototipo>: ResponsePrototype { clon: clon(), arrayBuffer: arrayBuffer(), blob: blob(), … }
Paso 2: Obtendremos un resultado en el flujo de datos. Luego estamos viendo nuestros datos JSON, que son los siguientes:
Objeto { datos: (7) […], fuente: (1) […] }
datos: Array(7) [ {…}, {…}, {…}, … ]
0: Objeto {
“ID Nation”: “01000US”,
Nación: “Estados Unidos”,
“Año de identificación”: 2019, …
}
”Nación de identificación”: “01000US”
“ Año de identificación”: 2019
Nación: “Estados Unidos”
Población: 328239523
“ Nación Slug”: “estados-unidos”
Año: “2019”
<prototipo>: Objeto { … }
1: Objeto {
“Nación ID”: “01000US”,
Nación: “Estados Unidos”,
“Año ID”: 2018, …
}
2: Objeto {
“Nación ID”: “01000US”,
Nación: “Estados Unidos”,
“Año ID”: 2017, …
}
3 : Objeto {
“ID Nación”: “01000US”,
Nación: “Estados Unidos”,
“Año ID”: 2016, …
}
4: Objeto {
“Nación ID”: “01000US”,
Nación: “Estados Unidos”,
“Año ID”: 2015, …
}
5: Objeto {
“ ID Nation”: “01000US”,
Nation: “United States”,
“ID Year”: 2014, …
}
6: Object {
“ID Nation”: “01000US”,
Nation: “United States”,
“ID Year”: 2013 , …
}
longitud: 7
<prototipo>: Array []
fuente: Array [ {…} ]
<prototipo>: Objeto { … }
Como puede ver, tenemos una array de longitud 7. Y cada objeto tiene varias propiedades. Fuera de estas propiedades, solo estamos almacenando las dos propiedades, es decir, Año y Población en dos arrays diferentes usando un bucle for.
Paso 3: El último paso es crear un gráfico a partir de los datos recibidos. Para hacerlo, usamos chart.js, que es una manera fácil de incluir gráficos en nuestro sitio web. Agregue un enlace CDN en su etiqueta principal
<script src=”https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.js”>
A continuación se muestra la implementación del enfoque anterior:
HTML
<html> <head> <script type="text/javascript" src= "https://code.jquery.com/jquery-1.12.0.min.js"> </script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src= "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"> </script> <title>US Population Chart</title> </head> <body> <canvas id="bar-chart" width="800" height="450"> </canvas> <script> getData(); async function getData() { const response = await fetch( 'https://datausa.io/api/data?drilldowns=Nation&measures=Population'); console.log(response); const data = await response.json(); console.log(data); length = data.data.length; console.log(length); labels = []; values = []; for (i = 0; i < length; i++) { labels.push(data.data[i].Year); values.push(data.data[i].Population); } new Chart(document.getElementById("bar-chart"), { type: 'bar', data: { labels: labels, datasets: [ { label: "Population (millions)", backgroundColor: ["#3e95cd", "#8e5ea2", "#3cba9f", "#e8c3b9", "#c45850", "#CD5C5C", "#40E0D0"], data: values } ] }, options: { legend: { display: false }, title: { display: true, text: 'U.S population' } } }); } </script> </body> </html>
Producción:
Publicación traducida automáticamente
Artículo escrito por namaldesign y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA