Het object van een Total.js 5 handelaar
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
| Eigenschap | Type | Wat het is |
|---|---|---|
$.url | string | Het pad van het verzoek, zonder de querystring. |
$.method | string | GET, POST... |
$.query | object | De querystring, geparsed. |
$.params | object | De {name}-segmenten van de route. |
$.body | object | De body, geparsed op basis van het contenttype (JSON, URL-encoded formulier, XML of multipart-velden). |
$.files | array | De geüploade bestanden van een multipart-verzoek. |
$.headers | object | De headers van het verzoek, met namen in kleine letters. |
$.ip | string | Het IP-adres; het eerste adres van x-forwarded-for als de header bestaat. |
$.host | string | De header host. |
$.referrer | string | De header referer. |
$.protocol | string | http of https (ook als een proxy dat aangeeft in x-forwarded-proto). |
$.ext | string | De extensie van de URL, zonder punt ($.extension is hetzelfde). |
$.xhr | boolean | true als de header x-requested-with XMLHttpRequest is. |
$.mobile | boolean | true als de user agent op een mobiele browser lijkt. |
$.robot | boolean | true als de user agent op een crawler lijkt. |
$.ua | string | Een korte naam van de browser en het systeem, zoals iPhone Safari of Windows Chrome. |
$.user | object | De gebruiker die AUTH() heeft goedgekeurd, of niets. |
$.language | string | De taal die LOCALIZE() heeft gekozen. |
$.datatype | string | json, urlencoded, multipart, xml, text of binary: het type van de body van het verzoek. |
$.response | object | Wat er wordt verstuurd: status, headers en value. Wijzig $.response.status en $.response.headers voordat je antwoordt. |
$.req, $.res | objects | Het Node.js-verzoek en -antwoord. |
Methoden die antwoorden
| Methode | Wat het doet | Recept |
|---|---|---|
$.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
| Methode | Wat het doet | Recept |
|---|---|---|
$.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.
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');
}
}