$ objektet av en Total.js 5 handlare
En route-hanterare får ett objekt, skrivet $ på den här webbplatsen. Det beskriver begäran och svarar på den. Svara en gång: efter $.json(), $.html() eller något annat svar är begäran klar.
Egenskaper
| Egenskap | Typ | Vad det är |
|---|---|---|
$.url | string | Begärans sökväg, utan frågesträngen. |
$.method | string | GET, POST... |
$.query | object | Frågesträngen, tolkad. |
$.params | object | Routens {name}-segment. |
$.body | object | Kroppen, tolkad efter sin innehållstyp (JSON, URL-kodat formulär, XML eller multipart-fält). |
$.files | array | De uppladdade filerna i en multipart-begäran. |
$.headers | object | Begärans huvuden, med namn i små bokstäver. |
$.ip | string | IP-adressen; den första adressen i x-forwarded-for när huvudet finns. |
$.host | string | Huvudet host. |
$.referrer | string | Huvudet referer. |
$.protocol | string | http eller https (även när en proxy anger det i x-forwarded-proto). |
$.ext | string | URL:ens filändelse, utan punkt ($.extension är samma sak). |
$.xhr | boolean | true när huvudet x-requested-with är XMLHttpRequest. |
$.mobile | boolean | true när user agent ser ut som en mobil webbläsare. |
$.robot | boolean | true när user agent ser ut som en sökrobot. |
$.ua | string | Ett kort namn på webbläsare och system, som iPhone Safari eller Windows Chrome. |
$.user | object | Användaren som AUTH() godkänt, eller ingenting. |
$.language | string | Språket som LOCALIZE() valde. |
$.datatype | string | json, urlencoded, multipart, xml, text eller binary: typen på begärans kropp. |
$.response | object | Vad som ska skickas: status, headers och value. Ändra $.response.status och $.response.headers innan du svarar. |
$.req, $.res | objects | Node.js-begäran och -svaret. |
Metoder som svarar
| Metod | Vad den gör | Recept |
|---|---|---|
$.json(value) | Svarar med JSON. | responses |
$.jsonstring(text) | Svarar med en text som redan är JSON, utan att serialisera den igen. | controller-completion-and-cache |
$.html(text) | Svarar med HTML. | responses |
$.plain(text) | Svarar med ren text ($.text är samma sak). | responses |
$.xml(text) | Svarar med XML. | responses |
$.empty() | Svarar med status 204 och utan kropp. | responses |
$.redirect(url, permanent) | Omdirigerar (302, eller 301 när permanent är true). | responses |
$.binary(buffer, type, name) | Svarar med byte och en innehållstyp. | responses |
$.file(path, name) | Skickar en fil från disk. | file-download |
$.stream(type, stream, name) | Skickar en läsbar ström. | file-download |
$.filefs(storage, id) | Skickar en fil från en FILESTORAGE. | filestorage |
$.image(options) | Skapar och skickar en bild vid behov. | images |
$.view(name, model) | Renderar en vy med layouten och svarar med den. | views-and-layouts |
$.layout(name) | Väljer en annan layout för nästa $.view(). | view-sections |
$.proxy(url) | Vidarebefordrar begäran till en annan URL och svarar med dess svar. | proxy |
$.respond(value) | Svarar i formatet i $.response.output (json när det inte är satt). | controller-completion-and-cache |
$.invalid(value) | Svarar med ett fel: en text, en statuskod som 404 eller en ErrorBuilder. | actions-crud |
$.fallback(code) | Svarar med sidan för en felkod, den anpassade när ROUTE('#404') finns. | error-pages |
$.success(value) | Svarar { "success": true }; value läggs till. | responses |
$.callback(err, value) | Vid ett fel svarar den $.invalid(err), annars $.json(value), eller $.success() när value är undefined. Utan argument returnerar den en funktion (err, response) som gör samma sak. | actions-crud |
$.successful(fn) | Returnerar en funktion (err, a, b, c): vid ett fel svarar den $.invalid(err), annars anropar den fn(a, b, c). | controller-completion-and-cache |
$.done(arg) | Returnerar en funktion (err, response): vid ett fel svarar den $.invalid(err), annars med framgångsobjektet. | controller-completion-and-cache |
Andra metoder
| Metod | Vad den gör | Recept |
|---|---|---|
$.cookie(name, value, expiration) | Läser en cookie, eller skriver en när du skickar ett värde. | headers-and-cookies |
$.csrf() | Skapar en CSRF-token för den här klienten. | csrf-protection |
$.hostname(path) | Den här serverns adress: protokoll, värd och sökvägen du skickar. | restbuilder |
$.action(name, model) | Kör en åtgärd med den här begäran (användare, query och params). | calling-actions-from-code |
$.transform(name, value, callback) | Kör en transformering med den här begäran. | transforms |
$.authorize(callback) | Kör AUTH() för den här begäran och sätter $.user; returnerar ett promise när det inte finns någon callback. | controller-completion-and-cache |
$.notmodified(date) | Svarar 304 och returnerar true när begäran har huvudet if-modified-since med det datumet. | controller-completion-and-cache |
$.httpcache(date) | Sätter cache-huvudena och last-modified för svaret. | controller-completion-and-cache |
$.clear() | Tar bort uppladdningens temporära filer. De tas bort ändå när begäran slutar. | file-upload |
$.autoclear(false) | Behåller de uppladdade filerna efter begäran, så att du kan använda dem senare. | upload-lifecycle-and-href |
$.custom() | Talar om för ramverket att du svarar själv via $.res: det skickar ingenting. | controller-completion-and-cache |
$.href(key, value) | Använd QUERIFY() som i det länkade receptet, den testade inbyggda hjälparen för frågelänkar. | upload-lifecycle-and-href |
$.flush(), $.resume(), $.free(), $.cancel() | Interna metoder: anropa dem inte. |
Exemplet svarar med egenskaperna och anropar de metoder som inte behöver någon förberedelse.
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');
}
}