A Total.js 5 kereskedő tárgya
Az útvonalkezelő egy objektumot kap, amelyet ezen az oldalon $-ként írunk. Leírja a kérést, és válaszol rá. Csak egyszer válaszolj: a $.json(), a $.html() vagy bármely más válasz után a kérés befejeződött.
Tulajdonságok
| Tulajdonság | Típus | Mi ez |
|---|---|---|
$.url | string | A kérés útvonala a lekérdezési karakterlánc nélkül. |
$.method | string | GET, POST... |
$.query | object | A lekérdezési karakterlánc, értelmezve. |
$.params | object | Az útvonal {name} szegmensei. |
$.body | object | A törzs, a tartalomtípus szerint értelmezve (JSON, URL-kódolt űrlap, XML vagy multipart mezők). |
$.files | array | Egy multipart kérés feltöltött fájljai. |
$.headers | object | A kérés fejlécei, kisbetűs nevekkel. |
$.ip | string | Az IP-cím; az x-forwarded-for első címe, ha a fejléc létezik. |
$.host | string | A host fejléc. |
$.referrer | string | A referer fejléc. |
$.protocol | string | http vagy https (akkor is, ha egy proxy ezt az x-forwarded-proto-ban jelzi). |
$.ext | string | Az URL kiterjesztése pont nélkül (a $.extension ugyanaz). |
$.xhr | boolean | true, ha az x-requested-with fejléc értéke XMLHttpRequest. |
$.mobile | boolean | true, ha a user agent mobil böngészőnek tűnik. |
$.robot | boolean | true, ha a user agent keresőrobotnak tűnik. |
$.ua | string | A böngésző és a rendszer rövid neve, például iPhone Safari vagy Windows Chrome. |
$.user | object | A felhasználó, akit az AUTH() jóváhagyott, vagy semmi. |
$.language | string | A nyelv, amelyet a LOCALIZE() választott. |
$.datatype | string | json, urlencoded, multipart, xml, text vagy binary: a kérés törzsének típusa. |
$.response | object | Amit elküldünk: status, headers és value. Válasz előtt módosítsd a $.response.status és a $.response.headers értékét. |
$.req, $.res | objects | A Node.js kérés és válasz. |
Válaszoló metódusok
| Metódus | Mit csinál | Recept |
|---|---|---|
$.json(value) | JSON-nal válaszol. | responses |
$.jsonstring(text) | Olyan szöveggel válaszol, amely már JSON, újabb szerializálás nélkül. | controller-completion-and-cache |
$.html(text) | HTML-lel válaszol. | responses |
$.plain(text) | Egyszerű szöveggel válaszol (a $.text ugyanaz). | responses |
$.xml(text) | XML-lel válaszol. | responses |
$.empty() | 204-es állapottal és törzs nélkül válaszol. | responses |
$.redirect(url, permanent) | Átirányít (302, vagy 301, ha a permanent true). | responses |
$.binary(buffer, type, name) | Bájtokkal és tartalomtípussal válaszol. | responses |
$.file(path, name) | Fájlt küld a lemezről. | file-download |
$.stream(type, stream, name) | Olvasható streamet küld. | file-download |
$.filefs(storage, id) | Egy FILESTORAGE fájlját küldi. | filestorage |
$.image(options) | Igény szerint képet hoz létre és küld. | images |
$.view(name, model) | Nézetet renderel a layouttal, és azzal válaszol. | views-and-layouts |
$.layout(name) | Másik layoutot választ a következő $.view()-hoz. | view-sections |
$.proxy(url) | Továbbítja a kérést egy másik URL-re, és annak válaszával válaszol. | proxy |
$.respond(value) | A $.response.output formátumában válaszol (json, ha nincs beállítva). | controller-completion-and-cache |
$.invalid(value) | Hibával válaszol: szöveggel, állapotkóddal, például 404-gyel, vagy ErrorBuilder-rel. | actions-crud |
$.fallback(code) | Egy hibakód oldalával válaszol, az egyéni oldallal, ha létezik a ROUTE('#404'). | error-pages |
$.success(value) | { "success": true }-val válaszol; a value hozzáadódik. | responses |
$.callback(err, value) | Hiba esetén $.invalid(err)-rel válaszol, különben $.json(value)-val, vagy $.success()-szel, ha a value undefined. Argumentumok nélkül egy (err, response) függvényt ad vissza, amely ugyanezt teszi. | actions-crud |
$.successful(fn) | Egy (err, a, b, c) függvényt ad vissza: hiba esetén $.invalid(err)-rel válaszol, különben meghívja az fn(a, b, c)-t. | controller-completion-and-cache |
$.done(arg) | Egy (err, response) függvényt ad vissza: hiba esetén $.invalid(err)-rel válaszol, különben a sikeres objektummal. | controller-completion-and-cache |
Egyéb metódusok
| Metódus | Mit csinál | Recept |
|---|---|---|
$.cookie(name, value, expiration) | Beolvas egy sütit, vagy ír egyet, ha értéket adsz át. | headers-and-cookies |
$.csrf() | CSRF-tokent hoz létre ennek a kliensnek. | csrf-protection |
$.hostname(path) | Ennek a szervernek a címe: protokoll, host és az átadott útvonal. | restbuilder |
$.action(name, model) | Műveletet futtat ezzel a kéréssel (felhasználó, query és params). | calling-actions-from-code |
$.transform(name, value, callback) | Átalakítást futtat ezzel a kéréssel. | transforms |
$.authorize(callback) | Lefuttatja az AUTH()-ot ehhez a kéréshez, és beállítja a $.user-t; visszahívás nélkül promise-t ad vissza. | controller-completion-and-cache |
$.notmodified(date) | 304-gyel válaszol, és true-t ad vissza, ha a kérésben az if-modified-since fejléc ezzel a dátummal szerepel. | controller-completion-and-cache |
$.httpcache(date) | Beállítja a válasz gyorsítótár-fejléceit és a last-modified-et. | controller-completion-and-cache |
$.clear() | Eltávolítja a feltöltés ideiglenes fájljait. A kérés végén úgyis eltávolítja őket a rendszer. | file-upload |
$.autoclear(false) | Megtartja a feltöltött fájlokat a kérés után, hogy később használhasd őket. | upload-lifecycle-and-href |
$.custom() | Közli a keretrendszerrel, hogy te magad válaszolsz a $.res-en keresztül: nem küld semmit. | controller-completion-and-cache |
$.href(key, value) | Használd a QUERIFY() függvényt a hivatkozott receptben látottak szerint, ez a tesztelt natív segéd lekérdezéses hivatkozásokhoz. | upload-lifecycle-and-href |
$.flush(), $.resume(), $.free(), $.cancel() | Belső metódusok: ne hívd őket. |
A példa a tulajdonságokkal válaszol, és meghívja azokat a metódusokat, amelyek nem igényelnek előkészítést.
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');
}
}