WordPress Rest API ➤ Qué es y cómo empezar a usarlo

WordPress Rest API ➤ Qué es y cómo empezar a usarlo
5 (100%) 2 votes

Si usted ha pasado algún tiempo en la comunidad de WordPress en los últimos años, lo más probable es que haya oído hacer referencia a la nueva API de REST.

Sin embargo, a menos que sea un desarrollador experimentado, es posible que no tenga ni idea de lo que es la API REST de WordPress.

Aunque los detalles técnicos son un poco complejos, los conceptos básicos detrás de esta característica son bastante fáciles de entender. La nueva API ayuda a expandir lo que WordPress como plataforma puede hacer.

Además, la API REST hace que sea más fácil que nunca para los desarrolladores conectar WordPress con otros sitios y aplicaciones.

En esta guía integral, le guiaremos a través de todos los aspectos básicos que necesita saber.

Explicaremos qué son las APIs en general, y qué son las APIs REST (y la versión específica de WordPress) en particular.

A continuación, hablaremos sobre cómo empezar a usar la API REST de WordPress usted mismo. ¡Saltemos ahora mismo!

Introducción a las interfaces de programación de aplicaciones (API)

Antes de profundizar en la API de REST específicamente, retrocedamos un poco. Para entender este concepto, es clave tener primero una idea básica de lo que son las APIs en general.

En su nivel más fundamental, una API – o Interfaz de Programación de Aplicaciones – permite que dos aplicaciones se comuniquen entre sí.

Por ejemplo, cuando usted visita un sitio web, su navegador envía una petición al servidor donde se encuentra ese sitio.

La API de ese servidor es la que recibe la solicitud de su navegador, la interpreta y devuelve todos los datos necesarios para mostrar su sitio.

Hay mucho más en la forma en que funcionan las APIs en un sentido técnico, por supuesto.

Sin embargo, vamos a centrarnos en lo que probablemente sea más importante para usted: las aplicaciones prácticas.

Las APIs han estado recibiendo mucha atención y visibilidad, porque muchas compañías han comenzado a empaquetarlas y ofrecerlas como productos que se pueden utilizar.

En otras palabras, los desarrolladores de una empresa como Google recopilarán algunas partes del código de su aplicación y lo pondrán a disposición del público.

De este modo, otros desarrolladores pueden utilizar la API como herramienta para ayudar a sus propios sitios a conectarse a Google y aprovechar sus funciones:

Por ejemplo, puede utilizar la API de Google Maps para colocar en su sitio un mapa totalmente funcional que se beneficie de todos los datos y funciones relevantes de Google.

Esto le ahorra tener que codificar un mapa y recopilar todos esos datos usted mismo.

Lo mismo se aplica a una amplia gama de sitios y aplicaciones.

A medida que los sitios web y la funcionalidad en la que se basan se vuelven más complejos, las herramientas como las API se vuelven cruciales.

Permiten a los desarrolladores construir sobre la funcionalidad existente, haciendo posible simplemente’conectar’ nuevas características a su sitio web.

A su vez, el sitio que posee la API se beneficia del aumento de la exposición y del tráfico.

Las reglas fundamentales de una API REST (Representational State Transfer)

Hay muchas maneras de crear una API. Una API REST (Representational State Transfer) es un tipo particular que se desarrolla siguiendo reglas específicas.

En otras palabras, REST presenta un conjunto de pautas que los desarrolladores pueden utilizar al crear APIs. Esto asegura que las APIs funcionen eficazmente.

Por lo tanto, para entender cómo funcionan las APIs de REST, necesita saber bajo qué reglas (o’restricciones’) funcionan.

Hay cinco elementos básicos que hacen que una API sea’RESTful’.

Tenga en cuenta que el `servidor’ es la plataforma a la que pertenece la API, y el `cliente’ es el sitio, aplicación o software que se conecta a esa plataforma:

Arquitectura cliente-servidor

La API debe ser construida de tal manera que el cliente y el servidor permanezcan separados el uno del otro. De esta manera, pueden seguir desarrollándose por sí mismos y pueden utilizarse de forma independiente.

Estados

Las APIs de REST deben seguir un protocolo `sin estado’. En otras palabras, no pueden almacenar ninguna información sobre el cliente en el servidor.

La solicitud del cliente debe incluir todos los datos necesarios por adelantado, y la respuesta debe proporcionar todo lo que el cliente necesita. Esto hace que cada interacción se convierta en un “uno y hecho”, y reduce tanto los requerimientos de memoria como el potencial de errores.

Cacheabilidad

Una’caché’ es el almacenamiento temporal de datos específicos, por lo que puede recuperarse y enviarse más rápidamente.

Las APIs RESTful hacen uso de datos almacenables en caché siempre que es posible, para mejorar la velocidad y la eficiencia. Además, la API debe informar al cliente si cada dato puede y debe almacenarse en caché.

Sistema de capas

Las APIs de REST bien diseñadas se construyen utilizando capas, cada una con su propia funcionalidad designada. Estas capas interactúan, pero permanecen separadas.

Esto hace que la API sea más fácil de modificar y actualizar con el tiempo, y también mejora su seguridad.

Interfaz uniforme

Todas las partes de una API de REST deben funcionar a través de la misma interfaz y comunicarse utilizando los mismos idiomas. Esta interfaz debería diseñarse específicamente para la API y ser capaz de evolucionar por sí sola. No debe depender del servidor o cliente para funcionar.

Cualquier API que siga estos principios puede ser considerada RESTful. Existe también una sexta restricción, denominada “código a la carta”.

Cuando se sigue, esta técnica permite que la API instruya al servidor para que transmita código a un cliente, con el fin de ampliar su funcionalidad. Sin embargo, esta restricción es opcional, y no es adoptada por todas las APIs de REST.

WordPress Rest API

En este punto, usted puede estar preguntándose cómo le afecta todo esto. Las APIs son excelentes herramientas, pero ¿son relevantes para su trabajo diario?

Si usted es un usuario de WordPress, la respuesta es inequívocamente “sí”.

La API REST de WordPress ha estado en desarrollo desde hace un par de años.

Durante bastante tiempo, se trabajó en él como un plugin independiente, al que los desarrolladores podían contribuir con el tiempo y con el que cualquiera podía experimentar.

De hecho, había dos versiones separadas del plugin de la API de REST. Ya en la actualización 4.4 se añadieron elementos de la API a la plataforma central.

Esto fue seguido por una integración completa a partir de WordPress 4.7 (en 2016). Esto significa que hoy en día, WordPress tiene su propia API REST completamente funcional.

¿Por qué la plataforma hizo este movimiento?

Según el propio sitio del proyecto, se debe a que WordPress se está convirtiendo en un “framework de aplicación completo”.

En otras palabras, la API REST permite a la plataforma interactuar con casi cualquier sitio y aplicación web.

Además, puede comunicar e intercambiar datos independientemente de los idiomas que utilice un programa externo.

Esto abre numerosas posibilidades para los desarrolladores.

También hace que WordPress como plataforma sea más flexible y universal que nunca.

También es importante tener en cuenta que es posible que escuche esta característica a veces conocida como la API de JSON REST de WordPress.

La parte’JSON’, que significa JavaScript Object Notation (Notación de objetos JavaScript), describe el formato que utiliza esta API para intercambiar datos.

Este formato está basado en JavaScript, y es una forma popular de desarrollar APIs gracias a lo bien que interactúa con muchos lenguajes de programación comunes.

En otras palabras, una API JSON es capaz de facilitar más fácilmente las comunicaciones entre aplicaciones que utilizan diferentes lenguajes.

La anatomía de una solicitud de API REST de WordPress

Ahora debe entender el propósito general y la dirección de la API REST de WordPress. Como tal, vamos a entrar en algunos detalles sobre cómo funciona.

Hay algunos conceptos básicos que necesitarás entender si quieres ponerte manos a la obra y empezar a experimentar con la API tú mismo.

Como hemos explicado, cada API procesa las solicitudes y devuelve las respuestas. En otras palabras, un cliente le pide que realice una determinada acción, y la API lleva a cabo esa acción. La forma exacta en que las API hacen esto puede variar.

Las APIs de REST están específicamente diseñadas para recibir y responder a tipos particulares de peticiones, utilizando simples comandos HTML (o “métodos”).

Para ilustrar, aquí están los métodos HTML más básicos e importantes que un cliente puede enviar:

GET

Este comando recupera un recurso del servidor (como un dato en particular).

POST

Con esto, el cliente añade un recurso al servidor.

PUT

Puede utilizar esta opción para editar o actualizar un recurso que ya está en el servidor.

DELETE

Como su nombre indica, esto elimina un recurso del servidor.
Junto con estos comandos, el cliente enviará una o más líneas que comunican exactamente qué recurso se desea y qué se debe hacer con él.

Por ejemplo, una petición para subir un archivo PHP a una carpeta en particular en un servidor podría verse así:

POST /nombrecarpeta/mi_archivo.php

La parte /foldername/my_file.php se llama ‘route’, ya que le indica a la API dónde ir y con qué datos interactuar.

Cuando se combina con el método HTTP (POST en este caso), toda la función se denomina “endpoint”.

La mayoría de las APIs de REST y los clientes que interactúan con ellas se vuelven mucho más complicados que esto, incluyendo la versión de WordPress.

Sin embargo, estos elementos básicos forman la base para el funcionamiento de la API REST de WordPress.

Cómo empezar a usar la API REST de WordPress

Siempre y cuando tenga un sitio WordPress configurado, puede empezar a experimentar con la API REST de inmediato. Puede realizar varias peticiones GET para recuperar datos directamente, simplemente usando su navegador.

Para acceder a la API de REST de WordPress, deberá comenzar por la siguiente ruta:

yoursite.com/wp-json/wp/v2

A continuación, puede añadir a esta URL para acceder a varios tipos de datos. Por ejemplo, puede buscar un perfil de usuario específico a través de una ruta como ésta:

yoursite.com/wp-json/wp/v2/users/4567

En este escenario, “4567” es el ID de usuario único para el perfil que desea ver. Si omitió ese ID, en su lugar verá una lista de todos los usuarios de su sitio:

Puede utilizar la misma ruta básica para ver otros tipos de datos, como sus mensajes o páginas. Incluso puede buscar subconjuntos de los datos que cumplan determinados criterios. Por ejemplo, puede recuperar todos los mensajes que incluyan un término específico utilizando esta URL:

yoursite.com/wp-json/wp/v2/posts?=buscar[palabra clave]

Esto es sólo una simple ilustración, por supuesto. Casi no hay límite para lo que realmente puede hacer usando la API REST de WordPress. Si quieres saber más sobre cómo funciona, te recomendamos que empieces con los siguientes recursos:

El Manual de la API de REST

Este es un recurso oficial de WordPress que documenta todo tipo de información sobre la API REST.

Entre otras cosas, encontrará una lista de puntos finales que puede utilizar, así como detalles sobre algunos de los aspectos estructurales de la API de REST que no hemos mencionado aquí.

https://developer.wordpress.org/rest-api/

Tutoriales de W3Schools

Aunque este recurso no es específico de la API de REST, ofrece prácticos tutoriales que pueden ayudarle a repasar conceptos clave, como los métodos HTTP y JSON.

https://www.w3schools.com/

La guía definitiva de la API REST de WordPress.

Este libro electrónico gratuito de WP Engine contiene mucha información práctica y ejemplos. Además, le guiará a través de cómo realizar varias tareas básicas (y más avanzadas).

The Ultimate Guide To The WordPress REST API

La API REST de WordPress es sin duda un tema complejo.

Sin embargo, incluso para los que no son desarrolladores, vale la pena entender los conceptos básicos de cómo funciona esta tecnología y lo que hace posible.

Y lo que es más, ¡puede que incluso le permita empezar a interesarse por el desarrollo usted mismo!

Cómo usar la REST API de WordPress

 

Video de DecodeCMS

Rest API y la seguridad en WordPress

Creo que muchos usuarios de WordPress probablemente subestiman la cantidad de datos que están disponibles a través de la API REST. Casi todo está disponible para cualquiera que lo solicite: entradas, páginas, categorías, etiquetas, comentarios, taxonomías, medios, usuarios, configuraciones y más.

Para la mayoría de estos tipos de datos, el acceso público es útil.

Por ejemplo, si tiene un lector de noticias alimentado por JSON, básicamente puede replicar toda la estructura de su sitio prácticamente en cualquier lugar. Pero ese fácil acceso invita a abusos potenciales.

Al igual que con los feeds RSS, el contenido JSON se puede incrustar fácilmente y se utiliza para hacer spam, phishing, plagio, bloquear cuentas de adsense, y otras más cosas de las que no quiero dar pistas.

Peligros de la Rest API

Más allá del robo de contenido, plagio, etc., la API de REST abre la puerta a otra posible preocupación de seguridad sobre la privacidad de los datos de los usuarios.

Por defecto cada sitio de WordPress entrega una cantidad significativa de datos de usuario a cualquiera o cualquier cosa que lo solicite.

Para cualquier usuario (de cualquier rol) que sea el autor de al menos un post, su información personal está abiertamente disponible para literalmente todo el mundo.

Así que, ¿qué datos de usuario se exponen exactamente a través de la API de REST? Como se explica en la documentación, el endpoint /users entrega básicamente todo excepto las direcciones de correo electrónico y contraseñas de los usuarios.

Todo lo demás – ID, Nombre, Sitio Web, Descripción, URL, Metadatos y más – todo de dominio público gracias a REST API.

¿Cuáles son los riesgos?

Así que WP REST API y seguridad. Para todo excepto los datos del usuario, los principales riesgos son básicamente los mismos que para los feeds RSS.

Los raspadores y los ladrones de contenido son lo suficientemente inteligentes como para robar su contenido sin importar el formato.

Si haces que sea fácil para la gente robar tu contenido, lo harán.

Así que ya sea que estén capturando los datos a través del formato RSS o JSON, el contenido es contenido, y la REST API hace que sea más fácil que nunca para cualquiera y cualquier cosa manipular el contenido de su sitio, categorías, etiquetas, meta, y mucho más.

¿Es eso aceptable? Depende de ti.

Ahora, para los datos de los usuarios, entramos en un nuevo nivel de riesgo.

Con los datos del usuario, la información es personal, por lo que existe un riesgo potencial para la privacidad.

Peor aún, para cada usuario, su “Nombre” por defecto es su “Nombre para mostrar”, que por defecto es el nombre de usuario registrado a menos que se especifique lo contrario.

Esto significa que los nombres de usuario registrados de su sitio están disponibles públicamente, por lo que existe un riesgo potencial de seguridad.

Riesgo para la privacidad

Por el riesgo de privacidad, tal vez no sea un problema para la mayoría de los sitios de WordPress.

Pero para el porcentaje de sitios que deben cumplir con una política de privacidad oficial u otras reglas y regulaciones de la compañía (GDPR, cualquiera?), compartir públicamente información sobre cada usuario calificado va a ser un problema.

O tal vez su sitio necesita mantener toda la información del autor en privado por razones legales o políticas (como en un reportaje de noticias o un sitio del gobierno).

En muchos de estos casos, la funcionalidad predeterminada de REST puede representar un grave riesgo para la privacidad.

Riesgo para la seguridad

Por lo que se refiere al riesgo para la seguridad, la importancia y el alcance de la cuestión es objeto de debate1,2,3. En general, los malos actores necesitan al menos dos cosas para acceder a su sitio4:

  • Nombre de usuario
  • Contraseña

Y gracias a la API WP REST, ahora tienen la mitad de lo que necesitan.

Por lo tanto, la API REST introduce una vulnerabilidad de seguridad al facilitar a los atacantes el acceso a su sitio web por la fuerza bruta.

En lugar de tener que adivinar el nombre de usuario y la contraseña correctos, ahora sólo tienen que adivinar la contraseña.

Lo que desafortunadamente para muchas cuentas de usuario es demasiado fácil de hacer.

Cómo asegurar la Rest API en WordPress

Así que en este punto, usted debe tener un buen entendimiento de cómo funciona la API REST de WordPress y por qué puede ser considerada un riesgo de privacidad y/o seguridad para probablemente un vasto porcentaje de sitios de WordPress.

Ahora usted puede decidir si es o no necesario tomar medidas y proteger su sitio contra la exposición de datos inseguros. Afortunadamente, hay un par de maneras fáciles de bloquearlo usando un plugin de WordPress. Aquí hay un par de opciones gratuitas:

  1. Disable WP Rest API – Desactivar REST completamente para todos los usuarios no registrados
  2. REST API Toolbox – Desactivar sólo el punto final de los usuarios de REST

La divulgación completa, la primera opción listada aquí, Disable WP REST API, es uno de mis propios plugins. Está diseñado para ser súper ligero y efectivo.

Eso en mente, cualquiera de estos plugins va a hacer el trabajo de proteger contra la exposición no deseada REST. Si conoce otras o mejores técnicas, compártalas en los comentarios.

¿Qué medidas están tomando los desarrolladores de WordPress?

El equipo de WordPress es consciente de este riesgo potencial para la privacidad/seguridad y ya ha tomado medidas para bloquearlo.

Por ejemplo, antes de la actualización de WP 4.7.1, la API de REST expuso los datos confidenciales de TODOS los usuarios registrados, independientemente de si se les acredita o no como autores de cualquier publicación.

Así que gracias a las mejoras realizadas en la versión 4.7.1, WordPress ahora muestra los datos de los usuarios SOLAMENTE para los usuarios (de cualquier rol) que son acreditados como autores de los tipos de mensajes registrados.

Este importante paso ayuda a reducir la exposición de los datos de los usuarios, y nos dice que el equipo de WP está trabajando activamente para mantener WordPress tan seguro y protegido como sea posible.

Esperamos que tomen medidas adicionales para eliminar la exposición innecesaria de información sensible del usuario.

Conclusión

Tan simple como es tratar adecuadamente las vulnerabilidades fundamentales inherentes a la API WP REST, desafortunadamente la mayoría de los usuarios de WordPress permanecerán felizmente inconscientes y no harán nada.

Esta es la razón por la que la API REST debería deshabilitar la visualización pública de la mayoría, si no de todos los datos de usuario.

La información sensible debe ser expuesta sólo a usuarios autentificados.

Deshabilitar la exposición de los datos de los usuarios por defecto ayuda a proteger a la gran mayoría de los usuarios de WordPress y, por supuesto, los desarrolladores siempre serán lo suficientemente inteligentes como para habilitar los endpoints de datos de los usuarios cuando sea necesario.