Érase una vez, las aplicaciones web solían ser monolitos que hacían todo por sí mismas. Estos días, no tanto. Con los servicios web que abren sus API, los desarrolladores están pasando a utilizar aplicaciones de terceros para manejar partes de la funcionalidad, como la autenticación o el correo electrónico de los usuarios..
Si bien el caso más común es uno en el que utiliza una API para conectarse a uno de los servicios en línea populares (Google, Twitter, etc.), hay ocasiones en que las dos aplicaciones que desea conectar son las suyas..
Esto me sucedió hace algún tiempo: había creado un carrito de compras personalizado como Ruby on Rails Aplicación y, por un tiempo, me alegró usarla junto con una página de destino HTML simple. Sin embargo, después de algún tiempo, encontré que para hacer que la página de destino fuera más atractiva, necesitaba actualizarla a algo que se actualizaba con más frecuencia. Yo quería un blog, y así WordPress fue la elección natural.
Con el sitio de WordPress creado, todo estaba bien, excepto por una pequeña cosa: cuando los visitantes agregaron artículos al carrito de compras y luego volvieron a comprar más, ¡se olvidaron de que habían agregado artículos a su carrito de compras! El carrito de compras y el sitio web necesitaban trabajar juntos. Necesitaba mostrar el contenido del carrito en el sitio web principal..
Este fue un lugar para algún desarrollo de API.
Al exponer la API del carrito de la compra al mundo y luego llamarlo desde mi tema de WordPress, podría pasar los datos de una manera elegante, sin piratear ninguno de los sistemas.
En este tutorial, basado en las lecciones aprendidas al hacer este proyecto, analizaré ambos extremos de la comunicación de la API: Primero, con la ayuda de la gema Grape, crearemos una API para exponer una parte de un Ruby on Rails basado Carro de la compra para aplicaciones externas. Luego, usaremos la API para recuperar el contenido del carrito de compras y mostrarlos en un sitio de WordPress. Dependiendo de cuáles sean sus necesidades, puede descubrir que crear la API es lo que le interesa o que en realidad le interesa la parte sobre cómo llamar a una API externa desde WordPress. De cualquier manera, espero que encuentres el tutorial útil e interesante.
Para ejecutar el código en este tutorial, necesitará la siguiente configuración:
Si bien no hay nada realmente complicado en el tutorial, se requiere un conocimiento básico de Ruby y Ruby on Rails, así como PHP y WordPress..
Como planea conectar una aplicación Ruby on Rails a un sitio web impulsado por WordPress, probablemente sea seguro asumir que ya tiene una aplicación Rails, y tal vez incluso un sitio de WordPress instalado y en funcionamiento. Entonces, para las necesidades del tutorial, he creado una versión simplificada pero funcional del carrito de la compra, con métodos para las acciones básicas que se requieren..
Puede descargar el código de muestra o simplemente leer el tutorial y aplicarlo a su propio proyecto Rails..
El ejemplo del proyecto Ruby on Rails es simple y consiste solo en un modelo (Carrito de compras
) y un controlador (ShoppingCartController
). En el Carrito de compras
modelo, encontrará los siguientes métodos:
El controlador, ShoppingCartController
Contiene una acción para agregar artículos a un carrito. La acción, añadir
, toma dos parámetros: simbólico
y (producto) carné de identidad
:
http: //
Volveremos a todo esto más adelante, pero ahora, vamos a trabajar y creamos la API para el carrito de la compra..
Ahora, con el proyecto Rails en su lugar, es hora de comenzar a crear la API.
Para construir nuestra API, usaremos una herramienta llamada Grape. La uva es un micro-marco diseñado para implementar API simples tipo REST en situaciones en las que, como dicen los desarrolladores, "no se necesita la capacidad de carga pesada de grandes marcos como Rails".
El marco Grape se puede usar por sí solo, pero también se adapta bien a Rails, lo que proporciona una manera fácil de crear API para acceder a un subconjunto (o por qué no a todos) de la funcionalidad de su aplicación Rails. Que es exactamente lo que vamos a hacer en este tutorial..
Para agregar la gema a su proyecto Rails, agregue la siguiente línea a su Gemfile
:
gema 'uva'
Luego actualiza tus gemas llamando (en la línea de comando):
instalación de paquete
Eso es. La gema ha sido instalada y podemos empezar a usarla..
Para comenzar a escribir la API, primero debe crear un archivo fuente Ruby que contendrá la funcionalidad de la API. Este es un marco ligero, por lo que podemos escribir la API completa en un solo archivo. Coloque este archivo dentro de su aplicación Rails, en un directorio llamado api
justo debajo de la principal aplicación
directorio.
En el proyecto de ejemplo, encontrará el código API en app / api / cart_external.rb
.
Añade las siguientes líneas a tu aplicacion.rb
archivo de configuración para asegurarse de que los archivos en app / api
están incluidos:
config.paths.add "app / api", glob: "** / *. rb" config.autoload_paths + = Dir ["# Rails.root / app / api / *"]
Dentro del archivo fuente de la API, ahora definiremos un módulo que contendrá nuestra clase de API:
módulo CartExternal clase API < Grape::API version 'v1', :using => : formato de ruta: json helpers do resource resource: cart do end end end end end
Esta es la versión más básica del contenido de una API de Grape simple. En este punto, todavía no hace nada, pero echemos un vistazo a los elementos de configuración al comienzo del código dentro de la clase.
versión 'v1',: usando =>: ruta
dice que esta es la versión v1
de la API y que la versión a la que el usuario de la API desea acceder debe definirse en la URL, por ejemplo, http: // localhost: 3000 / v1 /. Otras opciones para este campo de configuración son :encabezamiento
, : accept_version_header
y : param
, Cada uno de ellos define un método diferente para pasar la información de la versión. Consulte la documentación de Grape para obtener más información sobre el uso de cada uno de ellos..formato: json
le dice a Grape que codifique las respuestas salientes como cadenas con formato JSON (:TXT
y : xml
también puede ser usado).Antes de comenzar a agregar funcionalidad a la API, como paso final de la configuración, declare la clase de API a su aplicación Rails para que sepa cómo servirla a las personas y servicios que la soliciten..
Para hacer esto, agregue la siguiente línea a config / route.rb
:
monte CartExternal :: API => '/'
Ahora, volvamos a la CartExternal :: API
clase que definimos anteriormente.
Dentro de la clase de API, encontrarás dos elementos que no mencioné todavía: ayudantes
y recurso
.
ayudantes
es una macro que se puede usar junto con un bloque (o un módulo) para introducir métodos de ayuda que luego se pueden usar dentro de las acciones de la API. Estos métodos pueden ser, por ejemplo, los ayudantes necesarios para verificar los parámetros de la API o los métodos para comunicarse con la aplicación Rails principal.recurso
Define una colección lógica de métodos API. Puede agregar tantas como desee, pero en nuestro caso lo haremos bien con solo una, a la que llamaremos :carro
. Este recurso contendrá todos los métodos API relacionados con el carrito de compras. Con estas definiciones, cualquier llamada hecha a http: /// v1 / carrito
Será enrutado a nuestro recurso y las acciones definidas dentro de él.. Para ver cómo funciona esto, comencemos creando una llamada a la API para recuperar los artículos en un carrito de compras, identificado por el token de parámetro.
Dentro de recursos
bloque, agregue el siguiente código:
Desc 'Devolver artículos en el carrito'. params do opcional: token, tipo: String, predeterminado: nil end get '/ items' do token = params [: token] cart = ShoppingCart.find_or_create_with token response = status: 200, token: cart.token, cart: cart. as_json response.as_json fin
Ahora, hemos creado una acción que responde a las solicitudes GET enviadas a la ruta /artículos
.
La acción toma un parámetro de cadena opcional, simbólico
, declarado en el params
bloquear. Si bien no es obligatorio declarar parámetros, es una buena práctica, ya que hace que su código sea más legible y también le ahorra tiempo, ya que Grape hará la mayor parte de la validación de parámetros por usted. Para los parámetros requeridos, puede usar una construcción similar, reemplazando opcionalmente con require. Los parámetros requeridos no pueden tener un valor predeterminado.
Nuestra acción busca un carrito de compras que coincida con el token o crea uno nuevo si no se pasa ningún token. Luego devuelve una respuesta codificada en JSON que consiste en un estado, el token real del carrito de la compra y el contenido del carrito de la compra..
Si está ejecutando su aplicación Rails localmente, ahora puede iniciar su servidor y apuntar su navegador a http: // localhost: 3000 / v1 / cart / items para ver la respuesta, que debería tener este aspecto:
"status": 200, "token": "XBrf2nCkTYfQJoU8d4A1nw", "cart": "item_count": 0, "items": []
Como no pasamos un token en nuestra llamada, se creó un nuevo carrito de compras y se le asignó un valor de token único generado aleatoriamente. Por eso también el carrito está vacío..
Si lo desea, para probar, puede usar la acción agregar en ShoppingCartController
para añadir un artículo al carrito:
http: // localhost: 3000 / shopping_cart / add / 1? token = TOKEN_FROM_PREVIOUS_CALL
Después de agregar el producto, cuando vuelva a llamar a la API, notará que ahora hay un artículo en el carrito:
"status": 200, "token": "XBrf2nCkTYfQJoU8d4A1nw", "cart": "item_count": 1, "items": ["cart_id": 2, "created_at": "2014-05-20T16: 44 : 24Z "," id ": 4," product_id ": 1," product_name ":" Test Product "," product_price ":" 10.0 "," updated_at ":" 2014-05-20T16: 44: 24Z "]
Agregue tantos elementos como desee y luego, antes de agregar más funciones, completemos la configuración y hagamos que WordPress hable con la API.
Ahora hemos probado la API llamándola desde un navegador web y, a continuación, es hora de hacer que WordPress se comunique con ella..
El código de WordPress que sigue se puede incluir en un complemento de WordPress o en un tema de WordPress funciones.php
dependiendo de su proyecto y el contexto donde se necesita la comunicación API. En mi propia integración de carrito de compras, decidí agregar el código en un tema infantil para simplificar.
De cualquier forma que decidas ir, el código será el mismo..
Abre tu funciones.php
archivo (o un archivo PHP de complemento adecuado) e inserte la siguiente función PHP. Es una función auxiliar que encapsula la comunicación de la API, de modo que en el futuro, si necesita cambiar la firma de la API u otros elementos genéricos en las llamadas, puede hacerlo en un solo lugar..
Aquí están los huesos desnudos de lo que debe estar en esa función:
function api_get_as_json ($ action, $ params) $ api_endpoint = "http: // localhost: 3000 / v1 / cart"; if (null == $ params) $ params = array (); // Crear URL con params $ url = $ api_endpoint. $ acción. '?' . http_build_query ($ params); // Use curl para hacer la consulta $ ch = curl_init (); curl_setopt_array ($ ch, array (CURLOPT_URL => $ url, CURLOPT_RETURNTRANSFER => true)); $ output = curl_exec ($ ch); // Decodifica la salida en una matriz $ json_data = json_decode ($ output, true); curl_close ($ ch); devuelve $ json_data;
La función toma la ruta a la acción de la API y los parámetros requeridos, los combina en una URL y luego usa cURL para realizar una solicitud a la API.
Después de recibir la respuesta, la función la analiza en una matriz, usando json_decode
, Una función que forma parte de las bibliotecas estándar de PHP..
Ahora que hemos creado la funcionalidad para llamar a la API, usémosla para consultar el contenido del carrito de la compra a través de nuestro método API. / carrito / artículos
y luego imprimir la respuesta:
function show_shopping_cart () $ cart_data = api_get_as_json ('/ items', null); ?>Carrito de compras
0):?>
- PS
Su cesta está vacía.La función hace una llamada a la API
/artículos
e imprime la respuesta con algún formato HTML básico. Al final de la función, incluí un sencilloprint_r
bloque para representar el contenido de la respuesta JSON con fines de depuración.Esto es útil especialmente al principio, cuando el carro todavía está vacío y queremos asegurarnos de que no haya errores de comunicación que impidan que el código muestre su contenido..
Paso 3: Conectar la función a WordPress
Ahora que tenemos las funciones para realizar la llamada e imprimir la respuesta en su lugar, todo lo que queda es hacer que WordPress los llame.
La forma más sencilla de hacerlo sería ir directamente a los archivos de plantilla del tema y simplemente llamar
show_shopping_cart
Justo allí, en el lugar donde desea mostrar el carrito de compras. Si el tema es suyo y está seguro de que esto es todo lo que necesita, podría ser una opción viable..En el otro extremo del espectro se encuentra el enfoque más flexible y fácil de usar para incrustar la llamada en un widget de WordPress. De esta manera, puede mover el carrito de compras y colocarlo en cualquier área de la barra lateral de su sitio de WordPress. No es tan difícil, así que sigamos adelante y hagamos eso..
Todo lo que necesitamos es un
WP_Widget
subclase con un constructor y algún código para representar el contenido del carrito de la compra en la funciónwidget
. Las otras dos funciones,formar
yopciones
se puede dejar vacío por ahora (si desea agregar personalización al widget, aquí es donde irá).la clase ShoppingCartWidget amplía WP_Widget función pública __construct () parent :: __ construct ('shopping_cart_widget', __ ('Shopping Cart Widget', 'shopping_cart'), array ('description' => __ ('Un widget para mostrar un carrito de compras .', 'carrito de compras' ) ) ); / ** * Muestra el contenido del widget * / widget de función pública ($ args, $ instance) echo $ args ['before_widget']; show_shopping_cart (); echo $ args ['after_widget']; / ** * Muestra el formulario de opciones. * / public function form ($ instance) // El widget no tiene opciones / ** * Procesando las opciones del widget al guardar * / public function update ($ new_instance, $ old_instance) // El widget no tiene opciones register_shopping_cart_widget () register_widget ('ShoppingCartWidget'); add_action ('widgets_init', 'register_shopping_cart_widget');Ahora, vaya a su administrador de WordPress, y arrastre el widget Widget de carrito de compras a una de tus barras laterales:
Ahora, visite el sitio de WordPress para ver el código en acción. Debería ver algo como esto:
Su carrito de compras todavía está vacío, pero como puede ver en el
print_r
La salida se encuentra debajo del carrito de la compra, la comunicación funciona y el blog de WordPress está recibiendo datos de nuestra aplicación Rails.Ahora, con lo básico cubierto, veamos cómo hacer la comunicación un poco más segura..
4. Asegure la conexión con una clave API
Ahora hemos creado una API para una aplicación de Ruby on Rails y la hemos llamado desde un sitio de WordPress; sin embargo, aún falta algo importante: asegurar la API para que no esté abierta para que todos los que se encuentren en Internet puedan llamar a su gusto. Estoy seguro de que puedes pensar en todo tipo de cosas malas que sucederían si dejaras la puerta completamente abierta para todos, ¿verdad??
Una forma sencilla de proteger una API es generar una clave secreta para cada aplicación que permita llamar a su API. De esta manera, cada vez que una aplicación realiza una solicitud a la API, debe enviar su clave de API para que el servidor la verifique. Las personas que llaman sin una clave de API válida no podrán realizar solicitudes. Para mayor seguridad, la mayoría de los servicios también incluyen un secreto de API además de la clave API.
Así que ahora, volvamos al trabajo y agreguemos la clave API, primero a nuestro código Ruby y luego en el lado de WordPress.
Paso 1: agregar un método para verificar la clave API
Primero, agregue un método para verificar la clave API. Esta va en el
ayudantes
bloque de su clase API:def is_valid_api_key? (key) key == 'API_KEY' endEsta es una versión simple con una sola clave de API, por lo que, dependiendo de su aplicación, es posible que tenga que extenderla. Por ejemplo, si tiene varias aplicaciones que llaman a la API, deberá definir una clave de API única para cada una de ellas y almacenarlas en la base de datos. También es posible que desee crear una página de administración para crear nuevas claves API.
Por lo menos, necesita reemplazar
CLAVE API
con una clave real, generada que no es demasiado fácil de adivinar. Sin embargo, para este ejemplo, todo lo que importa es que tiene una clave API y un método para verificar que la clave pasada coincida con la almacenada en el sistema..Paso 2: utilizar el método de ayuda para verificar una clave API
Con el método auxiliar en su lugar, podemos agregar el cheque a nuestra única y única llamada a la API rodeando el código con la siguiente
si ... otra cosa
construir:si is_valid_api_key? params [: key] token = params [: token] cart = ShoppingCart.find_or_create_with token response = status: 200, token: cart.token, cart: cart.as_json response.as_json else error! ('401 Unauthorized', 401 ) finalObserve la
más
Bloque donde provocamos un error utilizando el método de uva.error!
.Ahora, reinicie el servidor Rails y vuelva a cargar su página de inicio de WordPress y verá algo como esto:
Esto se debe a que aún no hemos agregado la clave de API a nuestro código de WordPress y, por lo tanto, la API de Rails ya no acepta las solicitudes que realiza. Si lo desea, en este punto, puede agregar un manejo de errores adecuado y mostrar un buen mensaje de error.
Entonces, sigamos adelante y hagamos que la llamada a la API funcione de nuevo..
Paso 3: Agregar campo de configuración para la clave API
Por ahora, puede continuar y codificar la clave API en su
api_get_as_json
función, pero como agregar nuevas opciones a la WordPress Configuración general La página es muy sencilla, hagámoslo a través de un campo de configuración..Y mientras lo agregamos, también podemos agregar una opción para definir la URL para la API.
De esta manera, más adelante, cuando implemente el código de WordPress en un servidor real en vivo, podrá configurarlo sin tener que tocar el código, lo que siempre es agradable.
$ cart_api_settings_field = new CartApiSetting (); clase CartApiSetting function CartApiSetting () add_filter ('admin_init', array ($ this, 'register_fields')); función register_fields () register_setting ('general', 'cart_api_key', 'esc_attr'); add_settings_field ('cart_api_key', '', array ($ this,' fields_html '),' general '); function fields_html () $ value = get_option ('cart_api_key', "); echo '';Aquí está la definición del campo de configuración para la URL del punto final de la API utilizando la misma construcción:
$ cart_api_endpoint_settings_field = new CartApiEndpointSetting (); clase CartApiEndpointSetting function CartApiEndpointSetting () add_filter ('admin_init', array ($ this, 'register_fields')); function register_fields () register_setting ('general', 'cart_api_endpoint', 'esc_attr'); add_settings_field ('cart_api_endpoint', '', array ($ this,' fields_html '),' general '); function fields_html () $ value = get_option ('cart_api_endpoint', "); echo '';Visita tu wordpress Configuración general Menú para establecer los valores adecuados para estas configuraciones, asegurándose de que la clave API coincida con lo que haya establecido en su servicio Rails..
Paso 4: pasar la clave de la API con las solicitudes de la API
Ahora, con la clave de la API y la URL almacenada en las opciones de WordPress, actualicemos la función que realiza la llamada a la API.
Los cambios van al principio de la función, así:
function api_get_as_json ($ action, $ params) if (null == $ params) $ params = array (); $ api_key = get_option ("cart_api_key"); $ api_endpoint = get_option ("cart_api_endpoint"); if (! isset ($ api_key) ||! isset ($ api_endpoint)) return false; $ params ["key"] = $ api_key;Mirando el nuevo código de arriba, notará que el
$ api_key
y$ api_endpoint
Los ajustes se leen desde las opciones de WordPress..$ api_endpoint
Ya se usó para crear la URL para llamar, pero para$ api_key
, necesitamos agregar una línea (14) para incluir el valor en los parámetros enviados a la API.Actualice su página de inicio de WordPress y el contenido del carrito de la compra aparecerá nuevamente, esta vez asegurado con una clave API. Todo se ve bien, en realidad, lo mismo que antes de solicitar la clave API, y ha conectado la aplicación Rails con su sitio de WordPress.
5. Agrega una sesión compartida
El código de WordPress que hemos escrito hasta ahora hace llamadas a la API y las protege con una clave API, pero lo hace de una manera completamente sin estado. Para acciones simples y sin estado, como la publicación de actualizaciones en un tablero de mensajes o en su propia plataforma de microblogging como Twitter, todo lo que necesita son llamadas únicas como esta. Sin embargo, para nuestro ejemplo de carrito de compras, esto no es suficiente.
Como notará al probar el código, mientras nuestro servidor Rails identifica un carrito de compras con un token, no lo hemos utilizado en ningún lugar, por lo que cada vez que llame a
carrito / lista
está hecho, el servidor crea un nuevo carrito de compras vacío..No muy bueno. Para que una conexión de carro de la compra sea de alguna utilidad, debe poder agregar artículos a su carro y mantenerlos allí por un tiempo, incluso mientras pasa de una página a la otra..
En una palabra, necesitas una sesión.
Hay varias maneras de crear una sesión, pero vamos con la más simple, utilizando el token que nos ha sido entregado por la aplicación Rails y almacenándolo en una cookie del cliente. Como su sitio de WordPress es la interfaz que el usuario (y su navegador web) ve y se comunica con, ahí también es donde necesitamos configurar la cookie..
Paso 1: Establecer una cookie
Las cookies solo se pueden establecer en el encabezado, antes de que se haya renderizado el contenido, por lo que necesitamos hacer una reorganización en el código, moviendo el
/ carrito / artículos
llamar en el flujo de ejecución. Para ello, vamos a crear una nueva función de PHP.,get_shopping_cart
, y llámelo al comienzo de la ejecución del sitio de WordPress.Esto se puede hacer utilizando los ganchos de acción de WordPress. Para obtener una lista completa de enlaces, puede consultar el Códice de WordPress. En este caso, la acción.
en eso
hace lo que necesitamos, así que vamos a enganchar nuestra solicitud a esa.
add_action ("init", "get_shopping_cart");
La función
get_shopping_cart
se ve así:function get_shopping_cart () $ cart_data = api_get_as_json ('/ items', null); $ token = $ cart_data ['token']; // Expira la cookie en 30 minutos setcookie ('bread_cart', $ token, time () + 60 * 30); set_saved_cart_data ($ cart_data);Primero, la función hace la llamada ya familiar a nuestro
/artículos
Acción de la API. Luego tenemos algo nuevo: en la línea 3, extraemos el token de carrito de la compra devuelto por la API y luego, un par de líneas más tarde, lo guardamos en una cookie. La cookie está programada para caducar en 30 minutos, ya que supongo que alguien que esté comprando en una tienda en línea se habrá olvidado de la tienda en ese momento ...En la línea 7, puede notar otra llamada de función nueva:
set_saved_cart_data
. Regresaremos a esto en un minuto. Pero primero, hagamos que las llamadas API usen el token también.Paso 2: utilizar el token de la cookie
Primero, vamos a crear una función auxiliar para recuperar el token de la cookie:
function api_shopping_cart_token () $ token = null; if (isset ($ _COOKIE ['shopping_cart_token'])) $ token = $ _COOKIE ['shopping_cart_token']; devuelve $ token;Y luego, usando esa función, agregue la siguiente línea a
api_get_as_json
, Justo después de la línea donde establecemos el parámetro clave de la API:$ params ['token'] = api_shopping_cart_token ();Con esta adición, cada vez que se realiza una llamada a la API, el método
api_get_as_json
busca el token del carrito de la compra desde la cookie y lo agrega a los parámetros de solicitud. Si no se encuentra una cookie, la API recibirá un token vacío y tratará la llamada como un nuevo visitante, creando un nuevo carrito de compras vacío..Paso 3: Optimizar la ejecución al guardar algunos datos
Y ahora, de vuelta a
set_saved_cart_data
.Como notamos en el código anterior.,
get_shopping_cart
recibe el contenido completo del carrito de la compra, los mismos datos que consultamos enshow_shopping_cart
. Esto significa que estamos llamando a la API dos veces en una página de WordPress cuando una llamada debería ser suficiente. Guardar la respuesta para la duración de la solicitud HTTP es una optimización simple que podemos usar para reducir a la mitad el número de llamadas API..En PHP, las variables globales son específicas y solo viven con una solicitud HTTP, por lo que podemos usar una para almacenar los datos de forma segura.
get_shopping_cart
hasta el punto en que se utiliza para representar realmente el contenido del carrito de la compra.Para ello, he creado un simple par de funciones.,
set_saved_cart_data
yget_saved_cart_data
, que envuelven la variable global$ g_shopping_cart_data
Para mantener el código legible y fácil de mantener:global $ g_shopping_cart_data; función set_saved_cart_data ($ cart_data) global $ g_shopping_cart_data; $ g_shopping_cart_data = $ cart_data; función get_saved_cart_data () global $ g_shopping_cart_data; devuelve $ g_shopping_cart_data;Con los datos del carrito de la compra almacenados en una variable global, todo lo que necesita hacer es cambiar la primera línea en
show_shopping_cart
a:$ cart_data = get_saved_cart_data ();Con este cambio, el carro de la compra ahora tiene una sesión y el usuario puede agregar elementos al carro y moverse entre las páginas mientras sigue viendo el mismo carro de compras..
Paso 4: Prueba agregando algunos artículos al carrito
Para probar la funcionalidad, vamos a crear un enlace a la acción del controlador
shopping_cart / add
e imprimirlo al final deshow_shopping_cart
. Observe que para que el controlador comparta nuestra sesión también necesita el token del carrito de compras como parámetro:$ product_id = 1; $ token_params = http_build_query (array ('token' => api_shopping_cart_token ())); $ url = "http: // localhost: 3000 / shopping_cart / add /". $ product_id. "?" . $ token_params; eco 'Añadir artículo de prueba al carrito
';Clic en el enlace, Añadir artículo de prueba al carrito, para añadir un elemento. Luego, vuelva a su sitio de WordPress y ahora puede ver un artículo del carrito de compras que aparece en el blog de WordPress.!
Algunas palabras finales
Eso es todo: ahora ha conectado con éxito un carrito de compras basado en Ruby on Rails a su blog o sitio web de WordPress.
Eliminar el
print_r
depura, diseña la salida con algo de CSS y crea algunos enlaces reales "Agregar al carrito" (así como un botón "Retirar" que lleva al usuario a la aplicación real del carrito de compras) y tienes una integración de carrito de compras completamente funcional.Sin embargo, lo más importante es que puede utilizar el método de creación y respuesta a una API para vincular dos aplicaciones propias. Podrían ser cualquier cosa, así que ahora, adelante, crea algunas API.!