ForgeDocumentatie
nl

Documentatie

Het object van een Total.js 5 handelaar

Total.js 5 · total5@0.0.19 referencecontrollerresponses Uitgevoerd met Total.js 5

Een routehandler ontvangt één object, op deze site geschreven als $. Het beschrijft het verzoek en beantwoordt het. Antwoord één keer: na $.json(), $.html() of een ander antwoord is het verzoek afgerond.

Eigenschappen

EigenschapTypeWat het is
$.urlstringHet pad van het verzoek, zonder de querystring.
$.methodstringGET, POST...
$.queryobjectDe querystring, geparsed.
$.paramsobjectDe {name}-segmenten van de route.
$.bodyobjectDe body, geparsed op basis van het contenttype (JSON, URL-encoded formulier, XML of multipart-velden).
$.filesarrayDe geüploade bestanden van een multipart-verzoek.
$.headersobjectDe headers van het verzoek, met namen in kleine letters.
$.ipstringHet IP-adres; het eerste adres van x-forwarded-for als de header bestaat.
$.hoststringDe header host.
$.referrerstringDe header referer.
$.protocolstringhttp of https (ook als een proxy dat aangeeft in x-forwarded-proto).
$.extstringDe extensie van de URL, zonder punt ($.extension is hetzelfde).
$.xhrbooleantrue als de header x-requested-with XMLHttpRequest is.
$.mobilebooleantrue als de user agent op een mobiele browser lijkt.
$.robotbooleantrue als de user agent op een crawler lijkt.
$.uastringEen korte naam van de browser en het systeem, zoals iPhone Safari of Windows Chrome.
$.userobjectDe gebruiker die AUTH() heeft goedgekeurd, of niets.
$.languagestringDe taal die LOCALIZE() heeft gekozen.
$.datatypestringjson, urlencoded, multipart, xml, text of binary: het type van de body van het verzoek.
$.responseobjectWat er wordt verstuurd: status, headers en value. Wijzig $.response.status en $.response.headers voordat je antwoordt.
$.req, $.resobjectsHet Node.js-verzoek en -antwoord.

Methoden die antwoorden

MethodeWat het doetRecept
$.json(value)Antwoordt met JSON.responses
$.jsonstring(text)Antwoordt met een tekst die al JSON is, zonder die opnieuw te serialiseren.controller-completion-and-cache
$.html(text)Antwoordt met HTML.responses
$.plain(text)Antwoordt met platte tekst ($.text is hetzelfde).responses
$.xml(text)Antwoordt met XML.responses
$.empty()Antwoordt met status 204 en zonder body.responses
$.redirect(url, permanent)Verwijst door (302, of 301 als permanent true is).responses
$.binary(buffer, type, name)Antwoordt met bytes en een contenttype.responses
$.file(path, name)Verstuurt een bestand van schijf.file-download
$.stream(type, stream, name)Verstuurt een leesbare stream.file-download
$.filefs(storage, id)Verstuurt een bestand van een FILESTORAGE.filestorage
$.image(options)Maakt en verstuurt een afbeelding op aanvraag.images
$.view(name, model)Rendert een view met de layout en antwoordt ermee.views-and-layouts
$.layout(name)Kiest een andere layout voor de volgende $.view().view-sections
$.proxy(url)Stuurt het verzoek door naar een andere URL en antwoordt met het antwoord daarvan.proxy
$.respond(value)Antwoordt in het formaat van $.response.output (json als het niet is ingesteld).controller-completion-and-cache
$.invalid(value)Antwoordt met een fout: een tekst, een statuscode zoals 404 of een ErrorBuilder.actions-crud
$.fallback(code)Antwoordt met de pagina van een foutcode, de eigen als ROUTE('#404') bestaat.error-pages
$.success(value)Antwoordt { "success": true }; value wordt eraan toegevoegd.responses
$.callback(err, value)Bij een fout antwoordt het $.invalid(err), anders $.json(value), of $.success() als value undefined is. Zonder argumenten geeft het een functie (err, response) terug die hetzelfde doet.actions-crud
$.successful(fn)Geeft een functie (err, a, b, c) terug: bij een fout antwoordt ze $.invalid(err), anders roept ze fn(a, b, c) aan.controller-completion-and-cache
$.done(arg)Geeft een functie (err, response) terug: bij een fout antwoordt ze $.invalid(err), anders met het succesobject.controller-completion-and-cache

Andere methoden

MethodeWat het doetRecept
$.cookie(name, value, expiration)Leest een cookie, of schrijft er een als je een waarde meegeeft.headers-and-cookies
$.csrf()Maakt een CSRF-token voor deze client.csrf-protection
$.hostname(path)Het adres van deze server: protocol, host en het pad dat je meegeeft.restbuilder
$.action(name, model)Voert een actie uit met dit verzoek (gebruiker, query en params).calling-actions-from-code
$.transform(name, value, callback)Voert een transformatie uit met dit verzoek.transforms
$.authorize(callback)Voert AUTH() uit voor dit verzoek en stelt $.user in; geeft een promise terug als er geen callback is.controller-completion-and-cache
$.notmodified(date)Antwoordt 304 en geeft true terug als het verzoek de header if-modified-since met die datum heeft.controller-completion-and-cache
$.httpcache(date)Stelt de cacheheaders en last-modified van het antwoord in.controller-completion-and-cache
$.clear()Verwijdert de tijdelijke bestanden van de upload. Ze worden hoe dan ook verwijderd als het verzoek eindigt.file-upload
$.autoclear(false)Bewaart de geüploade bestanden na het verzoek, zodat je ze later kunt gebruiken.upload-lifecycle-and-href
$.custom()Zegt tegen het framework dat je zelf antwoordt via $.res: het verstuurt niets.controller-completion-and-cache
$.href(key, value)Gebruik QUERIFY() zoals in het gelinkte recept, de geteste native helper voor querylinks.upload-lifecycle-and-href
$.flush(), $.resume(), $.free(), $.cancel()Interne methoden: roep ze niet aan.

Het voorbeeld antwoordt met de eigenschappen en roept de methoden aan die geen voorbereiding nodig hebben.

controllers/api.js
exports.install = function() {
	ROUTE('GET /info/{a}/{b}/', info);
	ROUTE('POST /body/ @json', body);
	ROUTE('GET /answers/{kind}/', answers);
	ROUTE('GET /callback/{kind}/', callback);
};

function info($) {
	$.json({
		url: $.url,
		method: $.method,
		query: $.query,
		params: $.params,
		ext: $.ext,
		xhr: $.xhr,
		mobile: $.mobile,
		robot: $.robot,
		ua: $.ua,
		ip: $.ip,
		host: $.host,
		referrer: $.referrer,
		protocol: $.protocol,
		hostname: $.hostname('/x/'),
		datatype: $.datatype
	});
}

function body($) {
	$.json({ body: $.body, datatype: $.datatype });
}

function answers($) {
	switch ($.params.kind) {
		case 'json': return $.json({ a: 1 });
		case 'jsonstring': return $.jsonstring('{"a":1}');
		case 'html': return $.html('<b>x</b>');
		case 'plain': return $.plain('x');
		case 'xml': return $.xml('<a>1</a>');
		case 'empty': return $.empty();
		case 'redirect': return $.redirect('/x/', true);
		case 'binary': return $.binary(Buffer.from('abc'), 'application/octet-stream');
		case 'invalid': return $.invalid(409);
		case 'success': return $.success({ id: 7 });
		case 'status': $.response.status = 201; return $.json({ created: true });
		case 'header': $.response.headers['x-example'] = 'yes'; return $.json({});
	}
}

function callback($) {
	switch ($.params.kind) {
		case 'error': return $.callback('failed');
		case 'value': return $.callback(null, { v: 1 });
		case 'nothing': return $.callback(null);
		case 'function': return setImmediate($.callback(), null, { later: true });
		case 'successful': return setImmediate($.successful(function(a, b) { $.json({ a: a, b: b }); }), null, 'x', 'y');
	}
}