API REST WP Recuperando datos

En las partes anteriores de la serie, hemos estado analizando qué es la API REST de WP y cómo puede ayudarnos a crear mejores aplicaciones utilizando el back-end de WordPress.. 

Luego vimos dos formas de configurar la autenticación en el servidor para generar solicitudes autenticadas. El primero es el método de autenticación básico, que es útil en entornos de desarrollo y permite la creación rápida de prototipos, ya que no requiere mucho tiempo de configuración. El segundo método de autenticación es OAuth 1.0a, que se recomienda para entornos de producción ya que es mucho más seguro que el método de autenticación básico..

Ahora que hemos aprendido cómo configurar la autenticación, estamos listos para generar solicitudes autenticadas para liberar todo el poder de la API REST de WP. Usaremos la autenticación básica a lo largo de esta serie debido a su facilidad de uso, pero se recomienda que use la autenticación OAuth 1.0a, según lo proporciona el complemento OAuth 1.0a, para sus servidores de producción..

En la parte actual de la serie, obtendremos nuestra primera experiencia práctica con el complemento WP REST API. Lo haremos:

  • analizar la estructura de un OBTENER solicitud
  • mira cómo OPCIONES solicitar auto-documentos de la API
  • Enviar solicitudes al servidor para la recuperación de datos.
  • Analice la respuesta del servidor que incluye propiedades, esquema y enlaces.

Así que comencemos analizando la estructura de un simple OBTENER solicitud.

Anatomia de un OBTENER Solicitud

Antes de profundizar en los detalles de la recuperación de datos con la API REST de WP, debemos familiarizarnos con la sintaxis de una solicitud que se envía al servidor. Esto sentará una base sólida para nuestras futuras interacciones con la API REST de WP..

Considere la siguiente solicitud enviada al servidor:

$ GET http: // localserver / wp-json / wp / v2 / posts

El tipo de solicitud que estamos enviando es OBTENER-Uno de los seis verbos HTTP que vimos en la parte inicial de esta serie. UNA OBTENER La solicitud se utiliza para recuperar datos del servidor. Por lo tanto, cuando se ejecuta en el servidor, la solicitud anterior recupera una colección de todos los objetos de publicación en forma de datos JSON.

Teniendo en cuenta el URI de solicitud, podemos dividirlo en las siguientes partes:

  • http: // servidor local /: La URL de mi servidor de desarrollo local. Podría ser cualquier URL según la ubicación de su instalación de WordPress.
  • / wp-json: Es el prefijo de punto final de la API REST de WP.
  • / wp: El espacio de nombres del complemento WP REST API.
  • / v2: Es la versión del plugin WP REST API..
  • / mensajes: Es el recurso que queremos recuperar del servidor..

El espacio de nombres evita la anulación que podría ocurrir cuando se ejecutan varios complementos y cada uno proporciona su propia capa de abstracción para la API RESTful. Por lo tanto, cada abstracción funciona en su propio límite sin afectar los métodos y propiedades que pertenecen a alguna otra abstracción.

El espacio de nombres y la versión no estaban presentes en la versión heredada 1.2 del complemento. Así que en la versión heredada, la solicitud anterior sería así:

$ GET http: // localserver / wp-json / posts

Pero aquí no hablaremos de compatibilidad hacia atrás. Si desea conocer todos los cambios que se produjeron entre las versiones 1.xy 2.x, puede encontrarlos en la página oficial..

Además de recuperar una colección de recursos (publicaciones) utilizando el URI anterior, también podemos recuperar un recurso específico mencionando su ID:

$ GET / wp / v2 / posts / 100

La solicitud anterior devolverá un objeto de publicación cuando busque un recurso de publicación que tenga un ID de 100..

Otras veces, también debemos buscar publicaciones que cumplan con algunos criterios específicos. Para ese propósito, la API REST de WP proporciona una manera de usar el filtrar[] sintaxis:

$ GET / wp / v2 / posts? Filter [cat] = 1

Al enviar la solicitud anterior, podemos recuperar todas las publicaciones que pertenecen a una categoría de ID 1. La sintaxis del filtro puede ser particularmente útil al consultar publicaciones o navegar entre diferentes recursos, por ejemplo. Publicaciones y categorías, utilizando sus relaciones..

Finalmente, cuando se trata de argumentos que toman matrices como entrada en filtrar[] Sintaxis, podemos añadir un conjunto vacío de corchetes para expresar matrices de la siguiente manera:

$ GET / wp / v2 / posts? Filter [category__and] [] = 1 & filter [category__and] [] = 2

La sintaxis anterior es equivalente a la siguiente WP_Query ():

 array (1, 2)));

Por lo tanto, lo anterior OBTENER La solicitud recuperará una lista de publicaciones que pertenecen a ambas categorías con un ID de 1 y 2. La misma sintaxis también se puede usar para argumentos de matriz que tienen más de dos elementos. Tenga en cuenta que el uso de la categoría__y parámetro requiere autenticación de usuario con edit_posts privilegios.

Miraremos en el filtrar[] sintaxis con más detalle en una sección posterior.

Ahora que hemos aprendido sobre el formateo de un OBTENER solicitar y proporcionar sus parámetros, es hora de echar un vistazo a la OPCIONES solicitud. Un OPCIONES la solicitud facilita la navegación a través de la API y en realidad sirve como una forma de autodocumentación para hacer que la API sea más accesible mediante la documentación de todos los métodos HTTP disponibles en un punto final y, a su vez, los argumentos que admiten.

Navegando a través de la API usando el OPCIONES Solicitud

Como se mencionó anteriormente, el OPCIONES La solicitud puede ser extremadamente útil para explorar la API. Menciona todos los puntos finales que pertenecen a una determinada ruta y proporciona una lista de parámetros que estos puntos finales admiten para las operaciones CRUD..

Vamos a enviar un OPCIONES solicitud a la / wp / v2 / posts ruta para comprobar qué puntos finales admite y qué parámetros podemos transmitir a lo largo del OBTENER solicitud de consulta de datos:

$ curl -X OPCIONES wp / v2 / posts

He utilizado cURL para enviar la solicitud anterior, pero puede usar cualquier herramienta de su elección, incluido Postman. Asegúrese de incluir la ruta completa a la ruta anterior, incluida la ruta de su servidor.

"espacio de nombres": "wp / v2", "métodos": […], "puntos finales": […], "esquema": …, "_links": …

Lo anterior OPCIONES solicitud a la / wp / v2 / posts La ruta devuelve datos en el formato JSON que contiene cinco propiedades:

  1. espacio de nombres
  2. metodos
  3. puntos finales
  4. esquema
  5. _campo de golf
"espacio de nombres": "wp / v2", ...

los espacio de nombres La propiedad identifica el espacio de nombres del complemento actual. En nuestro caso es wp / v2, significando la versión 2 de la API REST de WP. Ya hemos examinado el espacio de nombres y el propósito que cumple en la sección anterior.

... "métodos": ["GET", "POST"], ...

los metodos La propiedad contiene una matriz de todos los métodos admitidos por la ruta actual. Al observar la respuesta que devolvió la solicitud anterior, queda claro que la / wp / v2 / posts La ruta soporta dos métodos, a saber: OBTENER y ENVIAR. Significa que podemos usar el / wp / v2 / posts ruta para recuperar publicaciones, así como crear una nueva publicación. Nos ocuparemos de la ENVIAR Método en la siguiente parte de esta serie, así que concentrémonos en el OBTENER método por el momento.

La siguiente propiedad-puntos finales-contiene una matriz de los puntos finales admitidos para la ruta actual. Esta propiedad está directamente vinculada a lo mencionado anteriormente. metodos propiedad, ya que enumera los puntos finales para los métodos soportados.

... "puntos finales": ["métodos": ["GET"], "args": ..., "métodos": ["POST"], "args": ...], ...

los puntos finales propiedad contiene valores de objeto que a su vez contienen dos propiedades, a saber metodos y args. los metodos propiedad contiene una matriz de métodos HTTP, y la siguiente args La propiedad contiene todos los argumentos soportados para estos métodos. Estos son los argumentos que enviamos a lo largo de la solicitud en forma de parámetros URI.

Mirando los argumentos apoyados por el OBTENER Método, nos encontramos con nueve argumentos que incluyen contextopáginapor página, Estos objetos de argumento contienen dos propiedades, necesario y defecto. los necesario propiedad indica si el argumento es requerido, y la defecto La propiedad representa el valor predeterminado del argumento..

"métodos": ["OBTENER"], "args": "context": "requerido": falso, "predeterminado": "ver", "página": "requerido": falso, "predeterminado": 1, "per_page": "requerido": falso, "predeterminado": 10, "filtro": "requerido": falso

los esquema La propiedad en la respuesta devuelta documenta todas las propiedades del recurso actual. El esquema define una estructura para los datos en el formato JSON. El formato de esquema utilizado en la API REST de WP se basa en el borrador 4 de las especificaciones de esquema JSON.

El último _campo de golf La propiedad contiene una matriz de objetos que contiene los enlaces de los recursos asociados. La clave en el objeto especifica el tipo de relación (por ejemplo,. autor, colección, yocomentarios, etc.), siendo su valor el enlace a ese recurso asociado. Este estándar de enlace se basa en HAL (lenguaje de aplicación de hipertexto). Puede encontrar más información sobre HAL leyendo las especificaciones creadas por Mike Kelley.

De manera similar, podemos enviar un OPCIONES solicitar a otras rutas, incluidas las de usuarios, comentarios, medios, páginas, etc., para verificar sus métodos y argumentos compatibles. OPCIONES las solicitudes son tu mejor amigo cuando trabajas con la API REST de WP.

La API REST de WP proporciona otra manera de evaluar la disponibilidad de la API enviando un OBTENER solicitud a la / wp-json Ruta del índice. Esto mostrará una lista de todas las rutas y sus puntos finales junto con sus métodos y argumentos compatibles.

$ curl -X GET http: // wordpress-server / wp-json

La solicitud anterior devolverá un objeto de respuesta que contiene una propiedad de rutas de la siguiente manera:


Esta función es inmensamente poderosa, ya que enumera todas las rutas y sus métodos y argumentos compatibles, eliminando así la necesidad de que todos estos estén documentados externamente. Nos referiremos a este objeto de respuesta cuando realicemos operaciones CRUD en diferentes recursos.

Habiendo examinado nuestras opciones para explorar la API, comencemos ahora a trabajar con la API REST de WP para recuperar datos del servidor.

Trabajando con mensajes

Por ahora, nos hemos familiarizado con el OPCIONES solicitud, que es una forma de auto-documentación para evaluar la disponibilidad de la API. También observamos cómo muestra los métodos y los argumentos admitidos para una ruta determinada. Con este conocimiento, ahora estamos listos para recuperar diferentes recursos del servidor mediante la API REST de WP.

El recurso con el que comenzaremos es el Mensajes recurso, ya que es el bloque de construcción principal de WordPress. Nos ocuparemos de recuperar las publicaciones utilizando diferentes filtros. Aplicando este conocimiento, podrá consultar publicaciones usando la API REST de WP tal como lo hace con la clase WP_Query ().

A lo largo de esta serie, hemos estado trabajando con Mensajes recurso para demostrar solicitudes de ejemplo y sus respuestas, y ya sabemos cómo recuperar la recopilación de publicaciones y una publicación individual por su ID. Así que no estaremos cubriendo eso otra vez. En cambio, veremos algunas formas más avanzadas de recuperar publicaciones utilizando los parámetros de nivel superior y la filtrar[] sintaxis.

Trabajar con parámetros de nivel superior

La API REST de WP expone algunas de las variables de consulta más utilizadas para publicaciones directamente en el OBTENER punto final Estos parámetros son:

  1. contexto: El alcance de la solicitud. Los valores posibles podrían ser verempotrar o editar.
  2. página: La página actual de la colección de publicaciones..
  3. por página: Número total de publicaciones por página.
  4. buscar: La consulta de búsqueda. Limita los resultados a la cadena correspondiente.
  5. autor: La identificación del autor. Se utiliza para limitar los resultados que pertenecen a un autor específico.
  6. excluir: Una matriz de ID de publicación para excluir de los resultados de búsqueda.
  7. incluir: Limite los resultados a las ID de publicación especificadas en esta matriz.
  8. compensar: Offset los resultados de búsqueda por un número especificado.
  9. orden: El orden de la colección. Puede ser asc o desc.
  10. orden por: Atributo de clasificación de la colección. Los valores posibles pueden ser carné de identidadtítulo o babosa.
  11. babosa: Limita los resultados a una publicación que tenga un slug específico.
  12. estado: Se utiliza para limitar la recopilación de las publicaciones que tienen un estado particular.

los contexto Este parámetro se usa para buscar publicaciones, dependiendo del alcance en el que estemos trabajando. Si solo enumeramos las publicaciones en alguna página de índice, entonces podemos ir con la ver contexto. Pero si estamos recuperando publicaciones para editarlas, entonces necesitamos usar el editar contexto:

$ GET / wp / v2 / posts? Context = edit

los editar parámetro de contexto introduce un adicional crudo campo en campos como títulocontenidoextracto, El valor de esto. crudo campo se puede hacer eco en el editor para editar el contenido.

Utilizando la editar contexto requiere que se autentique como usuario con edit_posts privilegios.

Utilizando empotrar como el valor de la contexto parámetro recupera la colección de las publicaciones con un subconjunto mínimo de sus propiedades.

Los otros parámetros mencionados anteriormente son bastante autoexplicativos, y puedes jugar con ellos en tu cliente HTTP.

Estos fueron los parámetros básicos que le permiten consultar publicaciones basadas en ciertos criterios. Para reducir nuestras capacidades de consulta, la API REST de WP proporciona la filtrar[] sintaxis que soporta un subconjunto de la WP_Query () args.

Utilizando la filtrar[] Sintaxis

Además de recuperar una colección de publicaciones utilizando algunos parámetros básicos de nivel superior, la API REST de WP expone algunas de las WP_Query () variables usando el filtrar[] sintaxis. Al utilizar esta sintaxis, podemos consultar publicaciones de la misma manera que lo hacemos cuando trabajamos con WP_Query () clase.

Los parámetros de paginación son los más importantes de todos los filtros, ya que se utilizan ampliamente en las páginas de listas de publicaciones. Los parámetros de paginación nos permiten mostrar un número específico de publicaciones por página y navegar a un número específico de páginas que contienen publicaciones..

Por defecto, un OBTENER La solicitud recupera una colección de 10 mensajes por página. Veamos cómo podemos enviar un OBTENER Solicitud para recuperar solo cinco publicaciones por página:

$ GET / wp / v2 / posts? Filter [posts_per_page] = 5

La solicitud anterior utiliza el publicaciones por página variable con la que podría estar familiarizado si ha trabajado con WP_Query ().

los paginado parámetro se utiliza junto con el publicaciones por página parámetro, y se utiliza para navegar a un número específico de páginas. Después de haber recuperado cinco publicaciones por página, haríamos la siguiente solicitud para navegar a la segunda página:

$ GET / wp / v2 / posts? Filter [posts_per_page] = 5 & filter [paginado] = 2

los publicaciones por páginapaginado Los filtros pueden ser extremadamente útiles cuando se trabaja para crear paginación en páginas de listados usando la API REST de WP. Estos dos parámetros son equivalentes a los por páginapágina Parámetros de nivel superior. Por lo tanto, la siguiente solicitud hace el mismo trabajo que la anterior:

$ GET / wp / v2 / posts? Per_page = 5 & page = 2

Además de la recopilación de publicaciones que devuelve la solicitud anterior, el servidor también devuelve varios encabezados con una respuesta que contiene información útil, incluido el número total de publicaciones y el número de páginas. Estos valores están contenidos en el X-WP-TotalPagesX-WP-Total cabeceras de respuesta.

los X-WP-TotalPagesX-WP-Total los encabezados de respuesta son extremadamente útiles al crear paginación utilizando la API REST de WP, ya que enumeran el número total de páginas y el número total de publicaciones, respectivamente.

Aparte de los filtros de paginación, el otro uso más importante del filtrar[] La sintaxis es poder consultar las publicaciones por sus fechas. Para este propósito, la filtrar[] la sintaxis soporta ocho parámetros, los mismos que los de la WP_Query () clase:

  1. año: El año de cuatro dígitos (por ejemplo, 2015 o 2016)
  2. mes al año: El número del mes del 1 al 12.
  3. metro: Seis dígitos año-mes (por ejemplo, 201601)
  4. w: La semana del año de 0 a 53.
  5. día: El día del mes del 1 al 31.
  6. hora: La hora del día de 0 a 23.
  7. minuto: El minuto de la hora de 0 a 60.
  8. segundo: El segundo del minuto de 0 a 60.

Entonces, si estamos buscando las publicaciones publicadas en la fecha 2015-10-15 (aaaa / mm / dd), esto se puede lograr mediante la siguiente consulta:

$ GET / wp / v2 / posts? Filter [año] = 2015 y filtro [monthnum] = 10 y filtro [día] = 15

Se puede preparar una consulta similar con la ayuda de los parámetros anteriores si necesitamos limitar nuestra búsqueda a la hora y minuto exactos.

Ya hemos visto en una sección anterior de este tutorial cómo podríamos obtener publicaciones que pertenecen a una categoría específica o categorías múltiples utilizando el filtro [gato]filtro [categoría__y] parámetros Ahora usaremos el filtro [category__in] parámetro para mostrar los mensajes que pertenecen a categorías que tienen un ID de 5 y 6:

$ GET / wp / v2 / posts? Filter [category__in] [] = 5 & filter [category__in] [] = 6

La solicitud anterior recuperará una lista de todas las publicaciones que pertenecen a categorías con un ID de 5 y 6.

El efecto contrario podría lograrse mediante el uso de la filtro [category__not_in] parámetro de la siguiente manera:

$ GET / wp / v2 / posts? Filter [category__not_in] [] = 5 & filter [category__not_in] [] = 6

Esto recuperará una lista de publicaciones y excluirá todas aquellas publicaciones que pertenezcan a categorías con un ID de 5 o 6.

Se podría escribir más sobre el uso del filtrar[] sintaxis, pero no voy a cubrir todo eso aquí. Puede encontrar una lista de todas las variables de consulta admitidas por el filtrar[] Sintaxis en la documentación oficial de la versión 1 del plugin. Una gran parte de esta información sigue siendo válida con la versión 2 de la API REST de WP, pero aún falta en algunas áreas. Al momento de escribir este tutorial, la documentación oficial de la versión 2 no dice nada sobre el filtrar[] la sintaxis y las vars de consulta que admite, pero podemos esperar ver mejoras en la documentación oficial en un futuro próximo, ya que hay varias personas (incluido yo mismo) que contribuyen al desarrollo y la documentación del complemento..

Ahora que hemos visto diferentes opciones al consultar publicaciones con la ayuda de la API REST de WP, estamos listos para seguir avanzando en nuestro viaje y ver algunos otros recursos compatibles con la API REST de WP..

Trabajar con revisiones posteriores, categorías, etiquetas y meta

Las revisiones de publicación proporcionan una forma de ver y restaurar las ediciones realizadas en una publicación. La API REST de WP proporciona una manera de ver todas las revisiones de una publicación consultando el / posts // revisiones punto final Por lo tanto, para una publicación dada con un ID de 10, todas las revisiones se pueden recuperar enviando la siguiente solicitud:

$ GET / wp / v2 / posts / 10 / revisiones

La solicitud anterior devolverá una matriz que contiene objetos de revisión. El objeto de revisiones contiene un subconjunto de propiedades encontradas en el objeto de publicación. A continuación se muestra un ejemplo de objeto de revisión en Postman:

Se puede recuperar una revisión específica dado que conocemos su id. Por lo tanto, el objeto siguiente puede recuperar una revisión con un ID de 2 y una publicación con un ID de 10:

$ GET / wp / v2 / posts / 10 / revisions / 2

La solicitud anterior devolverá un solo objeto de revisión.

Además de las revisiones de la publicación, las categorías para una publicación específica se pueden recuperar mediante la siguiente solicitud:

$ GET / wp / v2 / categories? Post =

Y para las etiquetas, utilizamos la siguiente petición:

$ GET / wp / v2 / tags? Post =

Con  siendo la identificación del post.

Si necesitamos recuperar el metadatos de la publicación para la publicación con un ID de 10, enviamos la siguiente solicitud como usuario autenticado:

$ GET / wp / v2 / posts / 10 / meta

Esto devolverá una matriz de objetos meta.

Tenga en cuenta que para trabajar con la meta de publicación y de página en la API REST de WP, debe tener el complemento complementario instalado en GitHub por el equipo de API REST de WP.

Trabajar con otros recursos

Por ahora, hemos obtenido una base bastante sólida para trabajar con la API REST de WP para recuperar datos. Ya hemos examinado la solicitud de opciones y cómo nos ayuda a explorar la API sin necesidad de documentación externa. 

Siempre puedes enviar un OPCIONES solicite a un recurso en particular y verifique qué puntos finales y parámetros admite. Si necesita enumerar todas las rutas que proporciona la API REST de WP, puede enviar un OBTENER solicitud al punto final del índice en / wp-json Como aprendimos a hacer al principio de este tutorial..

Teniendo en cuenta esta ventaja de la autodocumentación, no creo que necesitemos explorar cada recurso individual en este tutorial, ya que ahora puede hacerlo por su cuenta..

¿Qué pasa después??

En este largo tutorial, aprendimos a explorar la API utilizando la solicitud de OPCIONES, así como a recuperar datos del servidor utilizando la API REST de WP. Solo vimos un puñado de recursos que incluyen publicaciones, revisión de publicación y meta meta, ya que no pudimos cubrir todos los recursos compatibles en un solo tutorial. Pero ahora debería poder explorar la API por su cuenta utilizando las técnicas que aprendimos en este tutorial..

WordPress tiene una economía increíblemente activa. Hay temas, complementos, bibliotecas y muchos otros productos que lo ayudan a desarrollar su sitio y proyecto. La naturaleza de código abierto de la plataforma también lo convierte en una excelente opción desde donde puede mejorar sus habilidades de programación. En cualquier caso, puede ver todo lo que tenemos disponible en Envato Marketplace..

En la próxima entrega de esta serie, aprenderemos a realizar las otras tres operaciones de CRUD, es decir, crear, actualizar y eliminar recursos. Así que estad atentos…