Cree un gráfico a partir de datos JSON utilizando la solicitud Fetch GET (Fetch API) en JavaScript

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *