In questa fase viene effettuata una richiesta GET al sito in WooCommerce utilizzando l'endpoint /wp-json/wc/v2/products con le credenziali di accesso. Lo scheletro della nostra App è il seguente:
'use strict';
const express = require('express');
const fs = require('fs');
const https = require('https');
const port = process.env.PORT || 3000;
const app = express();
const routes = require('./routes');
const API = require('./lib/API');
const sslOptions = {
key: fs.readFileSync('privkey.pem'),
cert: fs.readFileSync('fullchain.pem')
};
app.disable('x-powered-by');
app.set('view engine', 'ejs');
app.use( (req, res, next ) => {
req.API = API;
next();
});
// Qui le route
app.get('/products', routes.products);
https.createServer(sslOptions, app).listen(port);
La gestione delle chiamate alle API è affidata alla classe API che abbiamo reso disponibile in tutte le route della nostra App tramite la funzione di middleware definita in .use(). In questo modo ora l'oggetto request ha un riferimento a tale classe visibile per tutto il ciclo di vita dell'applicazione.
La classe è molto semplice. Inizia richiedendo il modulo WooCommerce e definendo le opzioni di base:
'use strict';
const WC = require('woocommerce');
const WooCommerce = new WC({
url: 'https://ecommerce.com',
ssl: true,
consumerKey: 'ck_123456789abcd',
secret: 'cs_abcdefg12345'
});
Ora viene il corpo della classe:
class API {
static products() {
return WooCommerce.get('/products');
}
}
module.exports = API;
Il metodo statico products() restituisce una Promise che puo avere due risultati:
- La richiesta ha successo e la Promise si risolve con un array di prodotti in formato JSON.
- La richiesta fallisce e la Promise restituisce un errore generato dal modulo WooCommerce.
Lo useremo in questo modo nella route specifica:
'use strict';
// routes/index.js
module.exports = {
products: (req, res) => {
req.API.products().then(data => {
res.render('products', {products: data.products});
}).catch(err => {
res.json(err);
});
}
};
Il risultato viene mostrato di seguito.
Se vuoi aggiornamenti su CMS inserisci la tua email nel box qui sotto: