API REST de WP crear, actualizar y eliminar datos

En la parte anterior de la serie, observamos cómo podemos usar la API REST de WP para recuperar el contenido del servidor. Aprendimos a recuperar contenido para diferentes recursos, incluyendo publicaciones, metadatos, etiquetas, categorías, etc. Esta es una característica poderosa ya que este contenido se puede usar en cualquier lugar dentro o fuera de WordPress.

También aprendimos sobre la OPCIONES solicite que auto-documente la API enumerando todas las rutas, sus puntos finales y sus respectivos argumentos. Esto disminuye la necesidad de confiar en una documentación externa para la API y permite que los cambios se detecten con bastante rapidez en caso de que la API se haya actualizado o cambiado..

Habiendo examinado estas características, en el tutorial actual ahora centraremos nuestra atención en las otras tres operaciones de CRUD, es decir, crear, actualizar y eliminar datos mediante la API REST de WP..

En este tutorial, vamos a:

  • Analizar qué recursos son compatibles con los métodos de creación, actualización y eliminación.
  • Aprende a crear, actualizar y eliminar recursos.
  • buscar formas de enviar datos a lo largo de la solicitud para crear un recurso
  • Analizar la respuesta del servidor y diferentes códigos de respuesta.

Así que empecemos analizando qué recursos son compatibles con los métodos de creación, actualización y eliminación mediante la API REST de WP..

Comprobación de los métodos Crear, Actualizar y Eliminar en las Rutas

Antes de sumergirnos directamente en la creación y actualización de datos con la API REST de WP, debemos analizar qué rutas son compatibles con los métodos de creación y actualización. Hacemos esto comprobando las rutas y el metodos Propiedad en sus puntos finales. Esto se puede hacer enviando un OPCIONES Solicitud a rutas individuales, pero una forma más conveniente es enviar un OBTENER solicitud a la / wp-json Ruta de índice como hicimos en la parte anterior de la serie..

Enviando un OBTENER solicitud a la / wp-json ruta devuelve un objeto que contiene todas las rutas y sus puntos finales en el rutas propiedad.

Es en estas rutas individuales que podemos verificar si un recurso específico es compatible ENVIAR, PONER, y BORRAR metodos Comencemos analizando la Mensajes recurso.

los Mensajes recurso expone datos con las siguientes dos rutas:

/ wp / v2 / posts / wp / v2 / posts / (? P[\ d] +)

La primera ruta apunta a la colección del objeto post, y su método La propiedad es la siguiente:

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

Esta metodos propiedad muestra que la / mensajes rutas de apoyo OBTENERENVIAR Métodos para recuperar y crear datos respectivamente..

Para el / posts / (? P[\ d] +) ruta, que apunta a una sola Mensajes recurso, el metodos La propiedad es la siguiente:

"métodos": ["GET", "POST", "PUT", "PATCH", "DELETE"],

Como puede verse en el código anterior, el / posts / (? P[\ d] +) ruta soporta el OBTENER, ENVIAR, PONER, PARCHE, y BORRAR metodos.

Al examinar ambas rutas anteriores, podemos concluir que el / mensajes La ruta soporta la recuperación y creación de recursos. Y el / posts / (? P[\ d] +) La ruta admite la recuperación de recursos, así como la actualización y eliminación. Aunque apoya el ENVIAR método, esta ruta no admite la creación de recursos como veremos en un ejemplo a continuación.

Por lo tanto, las rutas que apuntan a un solo recurso no se pueden usar para crear contenido, aunque sí admiten la ENVIAR método. Esto se debe a que, para estas rutas, la ENVIAR, PONER, y PARCHE Los métodos se utilizan para actualizar el contenido en la API REST de WP..

Para concluir esta sección, resumamos los conceptos que hemos aprendido aquí:

  • Podemos comprobar qué rutas soportan. OBTENER, ENVIAR, y BORRAR métodos enviando un OPCIONES solicitud.
  • Las rutas que apuntan a una sola entidad no se pueden usar para crear contenido. Se utilizan para actualizar el contenido, aunque admiten la ENVIAR método.

Habiendo analizado diferentes rutas, ahora estamos listos para crear contenido usando la API REST de WP, y comenzaremos explorando Mensajes recurso.

Creación y actualización de una publicación

Vamos a crear una publicación enviando una solicitud de prueba desde Postman o cualquier otro cliente HTTP. Para hacer esto, encienda su cliente HTTP y envíe un ENVIAR solicitud a la / mensajes ruta. Pero antes de eso, recuerde que la creación, eliminación y actualización de recursos requieren autenticación como usuario con edit_posts derechos. Así que usaremos el método de autenticación básico que aprendimos en la segunda parte de esta serie..

Inicialmente, enviamos un cuerpo de solicitud vacío junto con la solicitud para fines de prueba:

$ POST / wp / v2 / posts

El servidor devolverá un 400 Petición Incorrecta error ya que faltaban los argumentos requeridos en el cuerpo de la solicitud. La siguiente respuesta será devuelta por el servidor:

La respuesta indica que cualquiera de contenido, título, o extracto son necesarios para crear un objeto post. Estos argumentos se pueden enviar a lo largo de la solicitud en el cuerpo de la solicitud de una de las siguientes tres formas:

  1. Como un objeto JSON
  2. Utilizando formularios
  3. Como parámetros de URL

Es solo una cuestión de elección utilizar cualquiera de estos métodos, y los veremos más de cerca más adelante en este tutorial. Pero ahora vamos a usar el primer método para crear una publicación..

Para enviar argumentos como un objeto JSON en Postman, cambie a Cuerpo pestaña y seleccione la crudo boton de radio. Luego, desde el menú desplegable a la derecha, seleccione la JSON (application / json) opción. En el área de texto a continuación, puede agregar el cuerpo JSON.

Actualmente, este cuerpo JSON posee una sola propiedad para el título del post.

Enviar la solicitud haciendo clic en el Enviar botón. Si todo va bien, el servidor devolverá un 201 - Creado estado con el objeto de publicación recién creado como la respuesta.

El estado predeterminado de esta publicación recién creada es borrador. Podemos actualizar el estado, así como algunas otras propiedades, enviando otra ENVIARPONER, o PARCHE solicitud. La identificación del post devuelto en mi caso es 232, así que enviaré una solicitud al siguiente punto final:

$ POST / wp / v2 / posts / 232

El cuerpo de la solicitud para actualizar el estado y el contenido La propiedad se ve así:

"status": "publish", "content": "Este es el contenido de la publicación"

Después de enviar la solicitud, el servidor devolverá un 200 - ok estado, lo que significa que la publicación se ha actualizado con éxito.

En el ejemplo anterior, encontramos los siguientes tres argumentos para crear una publicación:

  1. título
  2. estado
  3. contenido

La lista completa de argumentos admitidos para crear una publicación se puede recuperar con un simple OPCIONES solicitud de la siguiente manera:

$ OPCIONES / wp / v2 / posts

Entonces podemos comprobar el args propiedad en el ENVIAR matriz de métodos.

Ahora que hemos aprendido cómo podemos crear y actualizar una publicación, echemos un vistazo a algunos recursos más con los que podemos trabajar..

Creando y Actualizando Post Meta

Actualización: el trabajo con la meta de publicación y la página en WP REST API ahora requiere un complemento complementario disponible en GitHub por el equipo de WP REST API.

Post meta puede ser creado enviando un ENVIAR Solicitud a la siguiente ruta:

/ wp / v2 / posts / (? P[\ d] +) / meta

Dónde (?PAG[\ d] +) es el ID de la publicación principal. Usaré el ID de la publicación que creamos en la sección anterior, que es 232.

De manera similar a cómo enviamos un cuerpo de solicitud para crear un objeto de publicación, se puede enviar un objeto JSON que comprende dos propiedades para crear un meta de publicación. Estas dos propiedades son llave y valor.

"clave": "nombre", "valor": "Bilal"

Los valores de la llavevalor propiedades son nombreBilal respectivamente.

Envíe la solicitud y el servidor le devolverá un 201 - Creado Código de estado, que muestra que el meta de la publicación se ha creado correctamente. El meta objeto recién creado también se devolverá en la respuesta:

Tenga en cuenta que en el momento de escribir este tutorial, la API REST de WP no admite valores enteros para crear meta de publicación. Si intentamos enviar un valor entero en el objeto JSON para crear meta de publicación, un 400 Petición Incorrecta El código de estado será devuelto por el servidor..

"clave": "valor", "valor": 12345

Tenga en cuenta las comillas que faltan alrededor del valor 12345. La respuesta devuelta será como la siguiente:

Por lo tanto, todo lo que envíe a lo largo de la solicitud para crear el meta de la publicación debe estar en formato de cadena.

Creación de datos y métodos de actualización

Hasta ahora, en este tutorial, hemos estado utilizando el formato JSON en el cuerpo de la solicitud para crear y actualizar recursos. Echemos un vistazo a todas las opciones que proporciona la API REST de WP para crear y actualizar datos..

Enviando datos como parámetros de URL

La forma más fácil de enviar datos a lo largo de la solicitud es enviarlos como parámetros de URL. Considera lo siguiente ENVIAR Solicitud para crear una publicación:

$ POST / wp / v2 / posts? Title = el + título y contenido = este + es + el + contenido

La solicitud anterior envía dos parámetros al servidor para el título y el contenido del post.

Del mismo modo, para crear meta de publicación para una publicación con un ID de 232, usamos lo siguiente ENVIAR solicitud:

$ POST / wp / v2 / posts / 232 / meta? Key = nombre y valor = Bilal

La solicitud anterior creará el siguiente meta objeto:

Este método es más adecuado cuando los parámetros son cadenas cortas, como en el ejemplo anterior. Pero a medida que aumenta la cantidad de parámetros y la longitud de sus valores, es difícil administrarlos como parámetros de URL..

Enviando datos como un objeto JSON

Usando este método, tomamos los argumentos como un par clave / valor en un objeto JSON para pasarlos a lo largo de la solicitud. Hasta ahora, hemos estado utilizando Postman para enviar solicitudes al servidor. Ahora veremos cómo podemos implementar este método utilizando HTML y jQuery..

Considere la siguiente forma simple que consta de tres campos para el título, estado, y el contenido:

Cuando se envía el formulario anterior, se ejecuta el siguiente código JavaScript (jQuery):

var postForm = $ ('# post-form'); var jsonData = function (form) var arrData = form.serializeArray (), objData = ; $ .each (arrData, function (index, elem) objData [elem.name] = elem.value;); devolver JSON.stringify (objData); ; postForm.on ('submit', function (e) e.preventDefault (); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', método: 'POST', datos: jsonData (postForm), crossDomain: true, contentType: 'application / json', beforeSend: function (xhr) xhr.setRequestHeader ('Autorización', 'Nombre de usuario básico: contraseña');, éxito: función (datos) console.log (datos);, error: función (error) console.log (error);););

Al enviar el formulario anterior, enviamos una solicitud AJAX al / wp / v2 / posts ruta. los jsonData () El método acepta una instancia jQuery del formulario HTML y convierte sus datos al formato JSON. Estos datos JSON se utilizan entonces en el datos propiedad de la $ .ajax () método. Adicionalmente, configuramos el tipo de contenido a aplicación / json usando el tipo de contenido propiedad.

Antes de enviar la solicitud, configuramos el encabezado para incluir el Autorización Encabezado para utilizar el método de autenticación básico. Ya hemos aprendido a configurar y utilizar el método de autenticación básico en la segunda parte de esta serie..

Finalmente, la solicitud se envía al / wp / v2 / posts Ruta, y se crea una nueva entrada. El servidor devuelve este objeto de publicación recién creado como respuesta y simplemente lo iniciamos en la consola dentro de éxito() método.

El ejemplo anterior demuestra el uso del formato JSON para enviar datos a lo largo de la solicitud. La fuente de este objeto JSON puede ser cualquier cosa además de un formulario HTML, dependiendo de la arquitectura de su aplicación.

Tenga en cuenta que para que el código anterior funcione correctamente, es posible que deba configurar Acceso-Control-Permitir encabezados campo de cabecera para incluir el AutorizaciónTipo de contenido valores. Esto se puede hacer agregando el siguiente código en su WordPress .htaccess expediente:

Conjunto de encabezado Acceso-Control-Permitir encabezados "Tipo de contenido, Autorización"

Veamos ahora el envío de datos a través de formularios HTML..

Envío de datos utilizando formularios

La última forma de enviar datos a lo largo de la solicitud es mediante el uso de formularios HTML. Estas formas deben contener campos con el nombre atributo. los nombre atributo sirve como un nombre de argumento como título, estadocontenido, Los valores de estos campos sirven como el valor de estos argumentos..

Podemos usar el mismo formulario HTML creado en el ejemplo anterior y luego usar el siguiente código para crear una nueva publicación:

var postForm = $ ('# post-form'); postForm.on ('submit', function (e) e.preventDefault (); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / posts', método: 'POST', data: postForm.serialize (), crossDomain: true, beforeSend: function (xhr) xhr.setRequestHeader ('Authorization', 'Basic username: password');, success: function (data) console. Dato de registro );  ); );

El código anterior es el mismo que el del ejemplo anterior, excepto que eliminamos el jsonData () Método y ahora estamos enviando los datos del formulario en formato de cadena utilizando jQuery publicar por fascículos() método. El código jQuery anterior utiliza el valor predeterminado aplicación / x-www-form-urlencoded tipo de contenido que envía los datos en forma de una cadena gigante con argumentos separados por el Y firmar y sus valores asignados utilizando el = firmar. Esto se parece en algo al envío de datos como parámetros de URL, excepto que no expone datos. Esta es una forma eficiente de enviar datos si los datos contienen solo caracteres alfanuméricos.

Para enviar datos binarios (no alfanuméricos), utilizamos el multipart / form-data tipo de contenido. Este método puede usarse si necesitamos cargar imágenes u otros archivos usando la API REST de WP.

Para enviar datos de formulario en Postman, puede cambiar a Cuerpo pestaña y luego usar cualquiera de los datos de formulario o x-www-form-urlencoded opción.

Los argumentos se pueden definir en pares clave / valor para enviar a lo largo de la solicitud.

Se puede encontrar información detallada sobre los diferentes tipos de formularios en las especificaciones de W3C.

Subiendo medios usando el multipart / form-data Tipo de contenido

Ahora que hemos visto el x-www-form-urlencoded tipo de formulario, que envía datos en forma de cadena, comencemos a explorar un tipo de codificación de formulario más avanzado, es decir,. multipart / form-data.

los multipart / form-data El tipo de contenido se usa cuando se trata de datos binarios y, por lo tanto, se puede usar para cargar imágenes u otros tipos de archivos en el servidor.

En el siguiente ejemplo, usamos un formulario HTML simple que consiste en un entrada [tipo = ”archivo”] y un poco de jQuery para cargar imágenes al servidor usando el / wp / v2 / media ruta.

Considere el siguiente formulario HTML:

El siguiente JavaScript se ejecutará cuando se envíe el formulario anterior:

var imageForm = $ ('# image-form'), fileInput = $ ('# file'), formData = new FormData (); imageForm.on ('submit', function (e) e.preventDefault (); formData.append ('file', fileInput [0] .files [0]); $ .ajax (url: 'http: // your-dev-server / wp-json / wp / v2 / media ', método:' POST ', datos: formData, crossDomain: true, contentType: false, processData: false, beforeSend: function (xhr) xhr.setRequestHeader ( 'Autorización', 'Nombre de usuario básico: contraseña');, éxito: función (datos) console.log (datos);, error: función (error) console.log (error););) ;

Aquí primero obtenemos una instancia jQuery del formulario y su campo de entrada. Luego inicializamos un nuevo FormData objeto. los FormData La interfaz proporciona una forma de construir un conjunto de campos de formulario con pares clave / valor y utiliza el mismo formato que el multipart / form-data tipo de codificación de formulario.

Cuando se envía el formulario, evitamos su presentación llamando a la .preventDefault () Método en el objeto de evento. Luego agregamos un nuevo campo a la formData instancia utilizando el .adjuntar() método. los .adjuntar() método acepta dos argumentos para la nombre y el valor en el campo. La API REST de WP aplica la nombre atributo del campo de entrada de archivo para ser expediente. Por eso planteamos el primer argumento: el nombre-ser expediente, y para el segundo argumento pasamos un objeto blob de archivo refiriéndonos al elemento de entrada.

Por defecto, los datos pasados ​​a la datos propiedad de la jQuery.ajax () El método se procesa en una cadena de consulta. Ya que estamos cargando archivos de imágenes aquí, no queremos que eso suceda, y para eso establecemos la procesar datos propiedad a falso. También establecemos el tipo de contenido propiedad a falso para prevenir aplicación / x-www-form-urlencoded siendo enviado como el tipo de contenido predeterminado al servidor.

Y por último, configuramos el Autorización encabezado para autenticarnos como usuario con edit_posts privilegios.

Asegúrese de ejecutar el script anterior desde un servidor. Si todo va bien y el archivo se carga, el servidor devolverá el objeto multimedia recién creado..

Esta imagen se puede configurar como una imagen destacada para una publicación..

Habiendo examinado de cerca las formas de crear y actualizar recursos usando la API de REST de WP, veamos cómo podemos eliminarlos..

Eliminar datos con la API REST de WP

Eliminar datos con la API REST de WP es tan simple como enviar un BORRAR solicitud a un recurso particular.

Si necesitamos eliminar una publicación que tenga un ID de 10, enviamos lo siguiente BORRAR solicitud:

$ BORRAR / wp / v2 / posts / 10

Esto moverá la publicación a la papelera pero no la eliminará permanentemente. Para eliminar permanentemente una publicación, usamos el fuerza argumento:

$ DELETE / wp / v2 / posts / 10? Force = true

Tenga en cuenta que el fuerza se requiere un argumento cuando se elimina un recurso que no admite la eliminación de datos. Ejemplos de tales recursos son post meta y media..

Dicho esto, ahora concluimos la parte actual de la serie..

¿Qué pasa después??

En este largo tutorial, analizamos la creación, actualización y eliminación de diferentes tipos de recursos mediante la API REST de WP. Aprendimos sobre diferentes formas de enviar datos a lo largo de la solicitud, incluido el envío de datos como parámetros de URL, en formato JSON y mediante formularios. Al final del tutorial, aprendimos cómo eliminar recursos mediante el envío de un BORRAR solicitud.

En la próxima y última entrega de la serie, conoceremos la estructura interna de la API REST de WP y sus clases. También aprenderemos a extender la API para modificar las respuestas del servidor. Nos vemos en la siguiente parte de la serie, estad atentos ...