Guía Completa: API para Leer Datos de la Fórmula 1 (F1) con Ejemplos y Tutorial

 A mí gusta la formula 1 y hay veces que quiero ver los resultados y tengo que buscar en páginas de Instagram o en la Web y pensé porque no hacer mi propia página para ver los resultados de la última carrera lo cual les explicaré en esta publicación como hacerlo.

Primero hay que encontrar un API de formula 1 . Si sabes que es una Api saltaste este párrafo. Una Api es una conexión que podemos utilizar desde otra página para leer datos de otra página , es decir es un requerimiento o solicitud de información que se envía desde un sitio WEB indicando la URL de la cual quieres obtener la información y esta te regresa una respuesta con la un archivo JSON casi siempre o pude ser un XML. A manera de hacer una referencia del día a día, imagina que vas al supermercado (Walmart por ejemplo) y tu quieres saber el precio de un articulo, entonces vas al scanner de precios y lees tu producto y te da el precio, la API es el escáner, tu eres la pagina que solicita la información y el precio en pantalla del escáner es la respuesta del API.

En esta API de F1 que encontré en la pagina de https://rapidapi.com/hub debemos identificar cuáles son los datos de entrada que debemos enviar (o los datos de invocación para programadores de la vieja escuela ) y saber que datos nos va a regresar la API y en qué formato. 

Dos saber que datos nos va a regresar , en este caso vamos a buscar obtener datos JSON.


La API que vamos a utilizar es https://rapidapi.com/api-sports/api/api-formula-1/details

y vamos a obtener los valores de ranking para la temporada 2023, les comparto como se ve el código

<!DOCTYPE html>

<html>

<body>


<h2>Using the XMLHttpRequest Object</h2>


<div id="demo">

<button type="button" onclick="loadXMLDoc()">Ranking Drivers F1 Season 2023</button>

</div>


<script>

function loadXMLDoc() {

  var xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function() {

    if (this.readyState == 4 && this.status == 200) {

      document.getElementById("demo").innerHTML =

      this.responseText;

    }

  };

  

        xhttp.open("GET", "https://api-formula-1.p.rapidapi.com/rankings/drivers?season=2023",true);

xhttp.setRequestHeader("X-RapidAPI-Key", "yourkey");

xhttp.setRequestHeader("X-RapidAPI-Host", "api-formula-1.p.rapidapi.com");

  xhttp.send();

}

</script>


</body>

</html>



El resultado final es que nos da la información en modo JSON, falta darle formato y poner un campo de entrada para poder ingresar el año de la temporada, pero eso lo veremos mas adelante conforme mejoremos el código.

Si quieren probar la pagina la URL es https://www.programacionparatodos.com/p/api-de-f1-racking-drivers.html

si quieres ver la explicación del programa, te comparto la liga de nuestro canal de YouTube

                                https://youtu.be/ghO3eOwKpX0

Lo que mas me interesa compartir es que es muy fácil poder obtener información por medio de API, en este caso utilizamos HMTL , JAVASCRIPT para invocar a la API, donde solo le pasamos la URL y nos regreso información en formato JSON. 


NOTA 4 DE AGOSTO 2024

Hemos visto que ya con XMLHttpRequest marca un error de CORS con esta API, por lo que colocamos la actualización con fecth y la temporada 2024

<!DOCTYPE html>

<html lang="es">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Fetch API Example</title>

    <style>

        pre {

            background-color: #f4f4f4;

            padding: 10px;

            border-radius: 5px;

        }

    </style>

</head>

<body>

    <h1>Ranking de pilotos de Fórmula 1</h1>

    <pre id="result">Cargando datos...</pre>


    <script>

        // Función asíncrona para obtener los datos de la API

        async function fetchData() {

            const url = 'https://api-formula-1.p.rapidapi.com/rankings/drivers?season=2021';

            const options = {

                method: 'GET',

                headers: {

                    'x-rapidapi-key': 'YOURKEY',

                    'x-rapidapi-host': 'api-formula-1.p.rapidapi.com'

                }

            };


            try {

                const response = await fetch(url, options);

                if (!response.ok) {

                    throw new Error(`Error: ${response.status} ${response.statusText}`);

                }

                const result = await response.json();

                console.log(result);


                // Mostrar los datos en el documento HTML

                const resultElement = document.getElementById('result');

                resultElement.textContent = JSON.stringify(result, null, 2);

            } catch (error) {

                console.error(error);

                const resultElement = document.getElementById('result');

                resultElement.textContent = 'Error al obtener los datos. Verifica la consola para más detalles.';

            }

        }


        // Llamar a la función para obtener los datos cuando se cargue la página

        fetchData();

    </script>

</body>

</html>


Espero les sea de utilidad y nos compartan.

Otro ejemplo para leer un API y pasear json 

https://www.programacionparatodos.com/2024/08/api-de-banxico-para-obtener-tipo-de.html


Comentarios

Entradas más populares de este blog

Ejemplo Macro en Word

Macro de Excel para abrir archivo csv

Graficar funciones en Python con dataframes