En primer lugar, se está conectando a una URL y simplemente desinfectándolo todo en el Front-End. La API de Hypixel funciona para que tome la URL de la API para la solicitud deseada, en este caso api.hypixel.net/player?name=USERNAME&key=APIKEY, y obtenga un gran archivo JSON, que mi código debería desinfectar. Entonces, si está utilizando la API de Hypixel, sí, está enviando la clave de API a través del navegador, pero esa es una falla de seguridad en la API de Hypixle y no en mi código. El único propósito de mi código es aprender más sobre JavaScript y mostrárselo a otros.
Estoy trabajando en un acceso API a la API de Hypixel.
Esto me da un JSON, en el que quiero obtener un juego específico, que se ingresó en un campo y se guardó en un dictado.
Estoy tratando de integrar esto de esta manera (console.log es solo para fines de prueba, hasta que devuelva los datos a HTML):
let values = Array.from(document.querySelectorAll('#apiForm input')) .reduce((acc, input) => { return { ...acc, [input.id]: input.value }; }, {}) fetch(`https://api.hypixel.net/player?name=${values.name}&key=${values.key}`) .then(result => result.json()) .then(result => { if (result.success) { if (values.game in result.player.stats) { console.log(result.player.stats.$(values.game)) //not working } else { console.log(result.player.stats) console.log('Game not available or not played yet') } } else { console.log('Something went wrong, please check your name and API-Key or try again later') } })
¿Cómo puedo hacer esto aquí?
Entonces, cuando ingreso Bedwars, por ejemplo, la ruta que quiero debe dar como resultado result.player.stats.Bedwars
:
Reemplace result.player.stats.$(values.game)
con
result.player.stats[values.game]
Además, al colocar la entrada del usuario en las rutas de URI, desinfecte con encodeURIComponent
o cree la cadena de consulta con nuevos URLSearchParams({ ...props }).toString()
.