Obiekt $ dla handlowca Total.js 5
Obsługa trasy otrzymuje jeden obiekt, zapisywany na tej stronie jako $. Opisuje żądanie i odpowiada na nie. Odpowiadaj tylko raz: po $.json(), $.html() lub innej odpowiedzi żądanie jest zakończone.
Właściwości
| Właściwość | Typ | Czym jest |
|---|---|---|
$.url | string | Ścieżka żądania, bez ciągu zapytania. |
$.method | string | GET, POST... |
$.query | object | Ciąg zapytania, sparsowany. |
$.params | object | Segmenty {name} trasy. |
$.body | object | Treść, sparsowana według typu zawartości (JSON, formularz URL-encoded, XML lub pola multipart). |
$.files | array | Przesłane pliki żądania multipart. |
$.headers | object | Nagłówki żądania, z nazwami małymi literami. |
$.ip | string | Adres IP; pierwszy adres z x-forwarded-for, gdy nagłówek istnieje. |
$.host | string | Nagłówek host. |
$.referrer | string | Nagłówek referer. |
$.protocol | string | http lub https (także gdy proxy tak wskazuje w x-forwarded-proto). |
$.ext | string | Rozszerzenie adresu URL, bez kropki ($.extension to to samo). |
$.xhr | boolean | true, gdy nagłówek x-requested-with ma wartość XMLHttpRequest. |
$.mobile | boolean | true, gdy user agent wygląda na przeglądarkę mobilną. |
$.robot | boolean | true, gdy user agent wygląda na robota indeksującego. |
$.ua | string | Krótka nazwa przeglądarki i systemu, np. iPhone Safari lub Windows Chrome. |
$.user | object | Użytkownik zatwierdzony przez AUTH() lub nic. |
$.language | string | Język wybrany przez LOCALIZE(). |
$.datatype | string | json, urlencoded, multipart, xml, text lub binary: typ treści żądania. |
$.response | object | To, co zostanie wysłane: status, headers i value. Zmień $.response.status i $.response.headers przed odpowiedzią. |
$.req, $.res | objects | Żądanie i odpowiedź Node.js. |
Metody, które odpowiadają
| Metoda | Co robi | Przepis |
|---|---|---|
$.json(value) | Odpowiada JSON-em. | responses |
$.jsonstring(text) | Odpowiada tekstem, który już jest JSON-em, bez ponownej serializacji. | controller-completion-and-cache |
$.html(text) | Odpowiada HTML-em. | responses |
$.plain(text) | Odpowiada zwykłym tekstem ($.text to to samo). | responses |
$.xml(text) | Odpowiada XML-em. | responses |
$.empty() | Odpowiada statusem 204 i bez treści. | responses |
$.redirect(url, permanent) | Przekierowuje (302, lub 301, gdy permanent ma wartość true). | responses |
$.binary(buffer, type, name) | Odpowiada bajtami i typem zawartości. | responses |
$.file(path, name) | Wysyła plik z dysku. | file-download |
$.stream(type, stream, name) | Wysyła strumień do odczytu. | file-download |
$.filefs(storage, id) | Wysyła plik z FILESTORAGE. | filestorage |
$.image(options) | Tworzy i wysyła obraz na żądanie. | images |
$.view(name, model) | Renderuje widok z layoutem i odpowiada nim. | views-and-layouts |
$.layout(name) | Wybiera inny layout dla następnego $.view(). | view-sections |
$.proxy(url) | Przekazuje żądanie pod inny adres URL i odpowiada jego odpowiedzią. | proxy |
$.respond(value) | Odpowiada w formacie $.response.output (json, gdy nie ustawiono). | controller-completion-and-cache |
$.invalid(value) | Odpowiada błędem: tekstem, kodem statusu, takim jak 404, lub ErrorBuilder. | actions-crud |
$.fallback(code) | Odpowiada stroną kodu błędu, własną, gdy istnieje ROUTE('#404'). | error-pages |
$.success(value) | Odpowiada { "success": true }; value jest do niego dodawane. | responses |
$.callback(err, value) | Przy błędzie odpowiada $.invalid(err), w przeciwnym razie $.json(value), lub $.success(), gdy value to undefined. Bez argumentów zwraca funkcję (err, response), która robi to samo. | actions-crud |
$.successful(fn) | Zwraca funkcję (err, a, b, c): przy błędzie odpowiada $.invalid(err), w przeciwnym razie wywołuje fn(a, b, c). | controller-completion-and-cache |
$.done(arg) | Zwraca funkcję (err, response): przy błędzie odpowiada $.invalid(err), w przeciwnym razie obiektem sukcesu. | controller-completion-and-cache |
Inne metody
| Metoda | Co robi | Przepis |
|---|---|---|
$.cookie(name, value, expiration) | Odczytuje ciasteczko lub zapisuje je, gdy przekażesz wartość. | headers-and-cookies |
$.csrf() | Tworzy token CSRF dla tego klienta. | csrf-protection |
$.hostname(path) | Adres tego serwera: protokół, host i przekazana ścieżka. | restbuilder |
$.action(name, model) | Uruchamia akcję z tym żądaniem (użytkownik, query i params). | calling-actions-from-code |
$.transform(name, value, callback) | Uruchamia transformację z tym żądaniem. | transforms |
$.authorize(callback) | Uruchamia AUTH() dla tego żądania i ustawia $.user; bez callbacku zwraca promise. | controller-completion-and-cache |
$.notmodified(date) | Odpowiada 304 i zwraca true, gdy żądanie ma nagłówek if-modified-since z tą datą. | controller-completion-and-cache |
$.httpcache(date) | Ustawia nagłówki pamięci podręcznej i last-modified odpowiedzi. | controller-completion-and-cache |
$.clear() | Usuwa tymczasowe pliki przesyłania. I tak są usuwane po zakończeniu żądania. | file-upload |
$.autoclear(false) | Zachowuje przesłane pliki po żądaniu, abyś mógł ich użyć później. | upload-lifecycle-and-href |
$.custom() | Mówi frameworkowi, że odpowiadasz samodzielnie przez $.res: nic nie wyśle. | controller-completion-and-cache |
$.href(key, value) | Użyj QUERIFY() jak w linkowanym przepisie, przetestowanego natywnego helpera do linków z zapytaniem. | upload-lifecycle-and-href |
$.flush(), $.resume(), $.free(), $.cancel() | Metody wewnętrzne: nie wywołuj ich. |
Przykład odpowiada właściwościami i wywołuje metody, które nie wymagają przygotowania.
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');
}
}