ForgeTotal.js 5
es

Total.js 5

Opciones de transporte de acción y publicación TMS explícita

Total.js 5 · total5@0.0.19 total5reference Ejecutada con Total.js 5

En total5@0.0.19: NEWACTION() almacena csrf, encrypt y compress en metadatos de acción, pero no establecen las garantías HTTP que sus nombres podrían sugerir en las rutas HTTp:

  • csrf:true por sí solo acepta un POST sin token. Usa un middleware que llame a DEF.onCSRFcheck() con secret_csrf configurado, como en csrf-protection.
  • encrypt:true en una ruta declarada añade metadatos de @encrypt, pero esta versión todavía acepta el texto JSON y devolve el texto jSON.
  • compress:false no deshabilita el gzip HTTP ordinario; la composición de respuesta sigue $httpcompress, el tamaño de codificación y respuesta aceptada por el cliente.
  • publish declarar un tema/escema de TMS. El cumplimiento de una acción no publica automáticamente su resultado. $.publish(value) explicitamente y construye la carga pública deliberadamente. seleccione los campos para publicar antes de llamar $.publish(value).

Configure el token TMS para su aplicación. mensajes de TMS van a los suscriptores de ese tema; las reglas de permiso de la aplicación y la tenencia todavía pertenecen a su código.

config
secret_csrf : local-csrf-fixture-only
$tms : true
secret_tms : local-tms-fixture-only
$httpcompress : true
definitions/transport.js
NEWACTION('Transport|csrf', {
	csrf: true,
	input: '*value:String',
	action: function($, model) { $.callback(model); }
});
NEWACTION('Transport|encrypted', {
	encrypt: true,
	route: 'POST /encrypted/',
	input: '*value:String',
	action: function($, model) { $.callback(model); }
});
NEWACTION('Transport|compressed', {
	compress: false,
	action: function($) { $.callback({ text: 'abcdefghij'.repeat(400) }); }
});
NEWACTION('Transport|notice', {
	publish: 'value:String',
	input: '*value:String',
	action: function($, model) {
		$.publish({ value: model.value });
		$.success();
	}
});
controllers/transport.js
exports.install = function() {
	ROUTE('POST /csrf-option/ @json --> Transport|csrf');
	ROUTE('GET /compression-option/ --> Transport|compressed');
	ROUTE('POST /notice/ @json --> Transport|notice');
};