ForgeTotal.js 5
hu

Total.js 5

Controller callbacks, kézi engedélyezés és feltételes válaszok

Total.js 5 · total5@0.0.19 total5reference Total.js 5-tel lefuttatva

Ezek egy útvonal-controller szokásos metódusai, a művelet kontextusától eltérően. A $.jsonstring() már szerializált JSON-t fogad. A $.respond() a $.response.output által megnevezett metódust választja, alapértelmezés szerint JSON-t. A $.done(true) továbbítja a callback eredményét a sikerboríték belsejében; egy másik argumentum fix értéket választ. A $.successful(fn) csak akkor hívja meg a függvényét, ha nincs hiba.

Az await $.authorize() a hitelesítés eredményével teljesül; a névtelen eredményt a kódjának kell kezelnie. Feltételes válaszokhoz adjon át egy UTC fejlécsztringet a $.notmodified()-nek: a 0.0.19 verzióban az összehasonlítás pontos sztringegyenlőség. A $.httpcache() fejléceket állít be, de a $.json() felülírja a gyorsítótár-szabályzatot, ezért a példa a beállításuk után nyers buffert küld. Nyilvános gyorsítótárat csak nyilvános reprezentációkhoz használjon. A $.custom() átadja a válasz tulajdonjogát a kezelőjének; a Node-választ Önnek kell befejeznie.

definitions/auth.js
AUTH(function($) {
	if ($.headers['x-demo-user'] === 'alice')
		$.success({ id: 'alice' });
	else
		$.invalid();
});
controllers/completion.js
exports.install = function() {
	ROUTE('GET /serialized/', $ => $.jsonstring('{"ok":true}'));
	ROUTE('GET /respond/', function($) { $.response.output = 'plain'; $.respond('hello'); });
	ROUTE('GET /done/', $ => $.done(true)(null, { id: 7 }));
	ROUTE('GET /successful/', $ => $.successful(value => $.json({ value: value }))(null, 9));
	ROUTE('GET /callback-error/', $ => $.successful(() => $.json({ wrong: true }))('failure'));
	ROUTE('GET /manual-auth/', async function($) {
		var user = await $.authorize();
		if (user)
			$.json({ id: $.user.id });
		else
			$.invalid(401);
	});
	ROUTE('GET /conditional/', function($) {
		var modified = 'Mon, 05 Jan 2026 00:00:00 GMT';
		if ($.notmodified(modified))
			return;
		$.httpcache(modified);
		$.binary(Buffer.from('public version 1'), 'text/plain');
	});
	ROUTE('GET /custom/', function($) {
		$.custom();
		$.res.writeHead(202, { 'content-type': 'text/plain' });
		$.res.end('accepted');
	});
};