Presentación y agradecimientos
¿Qué es una API REST? 1.- Es una API: una interfaz de software que permite a diferentes aplicaciones comunicarse entre ellas: Software AP I 2.- Se basa en arquitectura REST: un estilo de arquitectura distribuida basada en peticiones HTTP: Un protocolo cliente/servidor sin estado Un conjunto de operaciones bien definidas para todos los recursos Una sintaxis universal para identificar dichos recursos El uso de hipermedios - Sin estado, esto es, toda la información necesaria se envía en la petición o la respuesta - Rutas únicas, universales y con métodos bien definidos David Navia @davidnaviaweb
Conceptos random Recurso Endpoint CRUD Un recurso es una entidad única. En WordPress, pueden ser un post, una página, un usuario, una taxonomía, etc. Endpoint Es una ruta, una URI que identifica una acción determinada sobre un conjunto de recursos CRUD Son las siglas de Create-Read-Update-Delete, que son las cuatro acciones básicas que podemos hacer sobre los recursos David Navia @davidnaviaweb
Conceptos random Métodos HTTP Esquema JSON GET, POST, PUT, PATCH, DELETE. Según el método, podemos efectuar una u otra acción sobre un recurso empleando la misma ruta Esquema Es una representación del formato de los datos contenidos en la respuesta de la API. El esquema de un post indica que devolverá id, title, content, etc. JSON Javascript Object Notation, un tipo de formato de datos ligero y legible para el que existen de-codificadores en casi todos los lenguajes de programación. David Navia @davidnaviaweb
La (JSON) REST API en WordPress.org Versión 4.4 8 de diciembre de 2015 Versión 4.7 6 de diciembre de 2016 Leer más… David Navia @davidnaviaweb
La (JSON) REST API en WordPress.org Al final… ¿qué significa todo esto? “ En pocas palabras, la integración de la JSON REST API marcará la transformación final de WordPress desde sus orígenes humildes como una solución de blogging hasta una plataforma de desarrollo completa. Tom Ewer Fundador de WordCandy 1.- Adios PHP (80%), hola resto de lenguajes: Python, Ruby… 2.- Verdadera integración mobile out-of-browser -> iOS & Android Apps 3.- El Frontend será completamente opcional 4.- El Backend podrá ser completamente distinto 5.- Y hablando de JS, nos subimos al carro de todos los nuevos frameworks (Angular, Backbone, React, Ionic, …) David Navia @davidnaviaweb
¿Qué pod(r)emos hacer con la REST API? Añadir un usuario Crear un post en borrador Actualizar un widget Actualizar el contenido de una página Mover menús Leer todos los posts de política Leer un solo post de cocina Crear un objeto media … Crear tus propias recetas desde una aplicación móvil Promocionar productos de tu ecommerce en un widget externo Proporcionar acceso a tu agenda de eventos ¿Cómo? David Navia @davidnaviaweb
Hay un plugin… La web del proyecto WP REST API contiene toda la información que necesitamos para hacer uso de la API a través de este plugin, desde una guía de usuario inicial, referencia completa, listado de plugins compatibles y solución a problemas comunes hasta un completo manual para extender y personalizar nuestra API. También incluye una librería cliente javascript/Backbone que lee el esquema y genera los distintos modelos y colecciones, así como provee de métodos CRUD Activar el plugin – http://wp-rest-api/wp-admin/plugins.php David Navia @davidnaviaweb
Vamos al lío… Descubriendo la API <link rel='https://api.w.org/' href='http://wp-rest-api.dev/wp-json/' /> David Navia @davidnaviaweb
Operaciones con los objetos (posts, por ejemplo) GET – Listar elementos $ curl http://wp-rest-api.dev/wp-json/wp/v2/posts/ GET – Listar un solo elemento $ curl http://wp-rest-api.dev/wp-json/wp/v2/posts/<id> David Navia @davidnaviaweb
Operaciones con los objetos (posts, por ejemplo) POST – Editar un elemento $ curl -X POST http://wp-rest-api.dev/wp-json/wp/v2/posts/<id> -d '{"title":“Title"}' DELETE – Borrar elementos $ curl -X DELETE http://wp-rest-api.dev/wp-json/wp/v2/posts/<id> curl -X POST http://wp-rest-api.dev/wp-json/wp/v2/posts/106 -d '{"title":"My New Title"}‘ curl -X DELETE http://wp-rest-api.dev/wp-json/wp/v2/posts/106 David Navia @davidnaviaweb
Autenticación COOKIE Si vas a hacer uso de la REST API en un plugin o tema, no hay problema, podremos interactuar con ella haciendo uso de la cookie de usuario y algún que otro nonce, o bien con objeto wpApiSettings wp_localize_script( 'wp-api', 'wpApiSettings', array( 'root' => esc_url_raw( rest_url() ), 'nonce' => wp_create_nonce( 'wp_rest' ) ) ); Ver ejemplo con jQuery http://wp-rest-api.dev/wp-admin/admin.php?page=my-rest-api-plugin-test Autenticación Básica - https://github.com/WP-API/Basic-Auth Autenticación de contraseñas - https://github.com/georgestephanis/application-passwords David Navia @davidnaviaweb
Autenticación OAUTH Hay un plugin… $ git clone https://github.com/WP-API/OAuth1 php -S 0.0.0.0:8080 www/index.php http://localhost:8080/ David Navia @davidnaviaweb
Caché Hay otro plugin… WP REST API Caché David Navia @davidnaviaweb
Aplicación en React.js David Navia @davidnaviaweb cd react-wp/ npm start David Navia @davidnaviaweb
Muchas gracias