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):

Ejemplo de respuesta de API JSON de DuckDuckGo

Ejemplo de respuesta de API JSON de DuckDuckGo

Consumir esta API no es nada difícil, pues es una simple petición GET y parseo de JSON.

Preparar cosas necesarias

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.

Dependencias

Solamente dependemos de request y request-promise, se instalan así:

npm install --save request request-promise

Listo

Sobre otras librerías

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)

Dirección de la API y forma de usarla

Bueno, como lo dije, es una petición HTTP GET y un parseo simple con JSON a la siguiente URL:

https://api.duckduckgo.com

A ella le añadimos parámetros get:

  • q: la búsqueda
  • format: el formato, en este caso JSON (también se puede XML pero ya estamos en 2019 como para seguir usándolo)

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.

Hablar es de mal gusto, muéstrame el código

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.

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. Puedes probar el ejemplo sin salir de este post, aquí abajo:

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.

¿Encontraste lo que buscabas?

Si es así, suscríbete para que estés enterado de mis nuevos posts sobre programación e informática

Estoy interesado en trabajar contigo de manera remota para llevar tu idea a la realidad, formar parte de tu equipo de desarrolladores, ayudarte con tu tarea, dar asesorías y todo lo relacionado con tecnología y programación. Contáctame para más información
No te vayas sin seguirme en Twitter, Facebook y GitHub
Si tienes dudas déjalas en un comentario, pero asegúrate de seguirme antes como agradecimiento (no te cuesta nada y me ayudas mucho)


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share via
A %d blogueros les gusta esto: