Saltar al contenido

SAP HANA XS Advanced: módulos dentro de las aplicaciones de Sode HANA Node.js

Regrese al proyecto del tutorial anterior (https://developers.sap.com/tutorials/xsa-xsjs-xsodata.html) y cree un nuevo módulo de tipo Node.js.

Dale un nombre al módulo: core_node. Deje todos los demás campos por defecto y presione Finalizar.
Finalización del nuevo módulo

Este nuevo módulo de Node.js contiene el server.js archivo de origen como punto de entrada de correo electrónico. Quieres una extensión server.js para manejar solo algunos códigos de Node.js.

archivo del servidor

Comience agregando dos nuevos requisitos del módulo Node.js hacia el comienzo del archivo. Hay uno para el módulo integrado http y el otro es el popular módulo de código abierto express. Una de las tareas más comunes en Node.js es actuar como servidor web y manejar http requests/responses. Express Es un módulo que integra y expande la biblioteca http de bajo nivel y proporciona muchos servicios adicionales.

/*eslint no-console: 0, no-unused-vars: 0, no-undef:0, no-process-exit:0*/
/*eslint-env node, es6 */

"use strict";
const https = require("https");
const port = process.env.PORT || 3100;
const server = require("http").createServer();
const express = require("express");

//Initialize Express App for XSA UAA and HDBEXT Middleware
const xsenv = require("@sap/xsenv");
const passport = require("passport");
const xssec = require("@sap/xssec");
const xsHDBConn = require("@sap/hdbext");
xsenv.loadEnv();

https.globalAgent.options.ca = xsenv.loadCertificates();
global.__base = __dirname + "/";
global.__uaa = process.env.UAA_SERVICE_NAME;

//logging
let logging = require("@sap/logging");
let appContext = logging.createAppContext();

//Initialize Express App for XS UAA and HDBEXT Middleware
let app = express();

//Build a JWT Strategy from the bound UAA resource
passport.use("JWT", new xssec.JWTStrategy(xsenv.getServices({
	uaa: {
		tag: "xsuaa"
	}
}).uaa));

//Add XS Logging to Express
app.use(logging.middleware({
	appContext: appContext,
	logNetwork: true
}));

//Add Passport JWT processing
app.use(passport.initialize());

let hanaOptions = xsenv.getServices({
	hana: {
		plan: "hdi-shared"
	}
});

hanaOptions.hana.pooling = true;
//Add Passport for Authentication via JWT + HANA DB connection as Middleware in Expess
app.use(
	xsHDBConn.middleware(hanaOptions.hana),
	passport.authenticate("JWT", {
		session: false
	})
);

//Setup Additional Node.js Routes
require("./router")(app, server);

//Start the Server
server.on("request", app);
server.listen(port, function () {
	console.info(`HTTP Server: ${server.address().port}`);
});

Consulte el código que acaba de pegar.

Primero el @sap/logging un módulo se utiliza para escribir archivos de registro y seguimiento. Al llamar al módulo de nodo externo, passport, está aplicando la autenticación UAA que especificó anteriormente. ¿Cómo? Usando una estrategia JWT (JSON web token), la función central de bienes reenvía la solicitud a la ruta real que, en este caso, el xsuaa un servicio que definió al principio utilizando el cliente XS. Estás inyectando una muestra @sap/hdbext, llamado xsHDBConn. Este módulo está diseñado para exponer enlaces agrupados de bases de datos de HANA como Node.js. promedio

Hecho

Inicie sesión para responder la pregunta