Ejemplo de respuesta de API JSON de DuckDuckGo
El buscador DuckDuckGo, aparte de todas las ventajas que tiene en comparación con Google y otros buscadores, proporciona una API que si bien no sirve para buscar como en el buscador, funciona para obtener respuestas inmediatas y buscar definiciones.
Hoy veremos cómo consumir esta API basada en JSON utilizando JavaScript del lado del servidor: Node.JS. Un ejemplo de lo que la API devuelve es lo siguiente (al buscar JavaScript):
Consumir esta API no es nada difícil, pues es una simple petición GET y parseo de JSON.
Recuerda instalar Node y NPM, también pásate por el tutorial de petición GET simple con Node.JS y aprende a trabajar con JSON en JS.
Además de eso, te invito a leer lo que son las funciones flecha, const, callbacks y plantillas de cadena; esto es para que entiendas mejor el código.
Solamente dependemos de request y request-promise, se instalan así:
npm install --save request request-promise
Listo
Me parece que por ahí hay librerías para consumir de DuckDuckGo pero lo haremos con una petición HTTP simple para que pueda ser entendido a más “bajo nivel” que usando una librería.
Además, podremos consumir la api en español gracias a algo que descubrí (bueno, seguramente ya es sabido por muchos pero para mí fue un descubrimiento)
Bueno, como lo dije, es una petición HTTP GET y un parseo simple con JSON a la siguiente URL:
A ella le añadimos parámetros get:
Por ejemplo, para buscar “JavaScript” haría esto:
https://api.duckduckgo.com/?q=JavaScript&format=json
Y listo.
Dicho eso ahora sí vamos al ejemplo y al truco para los resultados en español.
Antes de todo, para que la API responda en español hay que mandarle el encabezado de Accept-Language dentro de la petición HTTP; y ponerlo en un idioma de español.
Esto lo descubrí porque, probando la API en el navegador, respondía en español, pero desde la petición HTTP no. Más tarde lo puse y funcionó de maravilla.
/**
* Consumir API de respuestas inmediatas (instant answers)
* de DuckDuckGo en español con Node.js y request,
* usando JSON para el intercambio de datos
*
* @author parzibyte
*/
const request = require("request-promise"),
RUTA = "https://api.duckduckgo.com";
/**
* Una función que devuelve una promesa, al resolverse
* se tendrá la respuesta que dio DuckDuckGo.
*
* @param {string} busqueda La definición, pregunta o búsqueda
*/const respuestaInmediata = busqueda => request({
uri: `${RUTA}/?q=${encodeURIComponent(busqueda)}&format=json`,
headers: {
'Accept-Language': 'es_LA', // Para consumirla en español
},
json: true, // Para que lo decodifique automáticamente
});
respuestaInmediata("JavaScript")
.then(datosRespuesta => {
let definicion = datosRespuesta.Definition,
resumen = datosRespuesta.AbstractText,
respuesta = datosRespuesta.Answer,
url = datosRespuesta.AbstractURL,
imagen = datosRespuesta.Image,
relacionados = datosRespuesta.RelatedTopics.map(relacionado => relacionado.Text);
console.log({ definicion, resumen, respuesta, url, imagen, relacionados });
});
Aquí lo importante es lo que devuelve la función llamada respuestaInmediata
, y es un objeto que tiene algunas propiedades. En el ejemplo pongo las más importantes (que me parecieron más importantes) pero puedes ver la lista completa aquí.
Con eso podemos consumir la API de DuckDuckGo de una manera sencilla.
Aunque esto parezca sencillo, podemos hacer más cosas con la API y los datos que devuelve. Además, según DuckDuckGo, se mejorará conforme pase el tiempo.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.