ForgeDokumentace
cs

Dokumentace

Předmět $ pro obchodníka Total.js

Total.js 5 · total5@0.0.19 referencecontrollerresponses Spuštěno s Total.js 5

Obsluha routy dostává jeden objekt, na tomto webu zapisovaný jako $. Popisuje požadavek a odpovídá na něj. Odpovídejte pouze jednou: po $.json(), $.html() nebo jiné odpovědi je požadavek dokončen.

Vlastnosti

VlastnostTypCo to je
$.urlstringCesta požadavku bez řetězce dotazu.
$.methodstringGET, POST...
$.queryobjectŘetězec dotazu, zpracovaný.
$.paramsobjectSegmenty {name} routy.
$.bodyobjectTělo zpracované podle typu obsahu (JSON, formulář URL-encoded, XML nebo pole multipart).
$.filesarrayNahrané soubory požadavku multipart.
$.headersobjectHlavičky požadavku s názvy malými písmeny.
$.ipstringIP adresa; první adresa z x-forwarded-for, když hlavička existuje.
$.hoststringHlavička host.
$.referrerstringHlavička referer.
$.protocolstringhttp nebo https (i když to proxy uvádí v x-forwarded-proto).
$.extstringPřípona URL bez tečky ($.extension je totéž).
$.xhrbooleantrue, když je hlavička x-requested-with rovna XMLHttpRequest.
$.mobilebooleantrue, když user agent vypadá jako mobilní prohlížeč.
$.robotbooleantrue, když user agent vypadá jako crawler.
$.uastringKrátký název prohlížeče a systému, například iPhone Safari nebo Windows Chrome.
$.userobjectUživatel, kterého schválilo AUTH(), nebo nic.
$.languagestringJazyk, který vybralo LOCALIZE().
$.datatypestringjson, urlencoded, multipart, xml, text nebo binary: typ těla požadavku.
$.responseobjectCo se odešle: status, headers a value. Před odpovědí změňte $.response.status a $.response.headers.
$.req, $.resobjectsPožadavek a odpověď Node.js.

Metody, které odpovídají

MetodaCo děláRecept
$.json(value)Odpoví JSON.responses
$.jsonstring(text)Odpoví textem, který už je JSON, bez opětovné serializace.controller-completion-and-cache
$.html(text)Odpoví HTML.responses
$.plain(text)Odpoví prostým textem ($.text je totéž).responses
$.xml(text)Odpoví XML.responses
$.empty()Odpoví stavem 204 a bez těla.responses
$.redirect(url, permanent)Přesměruje (302, nebo 301, když je permanent true).responses
$.binary(buffer, type, name)Odpoví bajty a typem obsahu.responses
$.file(path, name)Odešle soubor z disku.file-download
$.stream(type, stream, name)Odešle čitelný stream.file-download
$.filefs(storage, id)Odešle soubor z FILESTORAGE.filestorage
$.image(options)Vytvoří a odešle obrázek na požádání.images
$.view(name, model)Vykreslí pohled s layoutem a odpoví jím.views-and-layouts
$.layout(name)Vybere jiný layout pro další $.view().view-sections
$.proxy(url)Přesměruje požadavek na jinou URL a odpoví její odpovědí.proxy
$.respond(value)Odpoví ve formátu $.response.output (json, když není nastaven).controller-completion-and-cache
$.invalid(value)Odpoví chybou: textem, stavovým kódem jako 404 nebo ErrorBuilder.actions-crud
$.fallback(code)Odpoví stránkou chybového kódu, vlastní, když existuje ROUTE('#404').error-pages
$.success(value)Odpoví { "success": true }; value se k němu přidá.responses
$.callback(err, value)Při chybě odpoví $.invalid(err), jinak $.json(value) nebo $.success(), když je value undefined. Bez argumentů vrátí funkci (err, response), která dělá totéž.actions-crud
$.successful(fn)Vrátí funkci (err, a, b, c): při chybě odpoví $.invalid(err), jinak zavolá fn(a, b, c).controller-completion-and-cache
$.done(arg)Vrátí funkci (err, response): při chybě odpoví $.invalid(err), jinak odpoví objektem úspěchu.controller-completion-and-cache

Další metody

MetodaCo děláRecept
$.cookie(name, value, expiration)Přečte cookie, nebo ji zapíše, když předáte hodnotu.headers-and-cookies
$.csrf()Vytvoří token CSRF pro tohoto klienta.csrf-protection
$.hostname(path)Adresa tohoto serveru: protokol, hostitel a cesta, kterou předáte.restbuilder
$.action(name, model)Spustí akci s tímto požadavkem (uživatel, query a params).calling-actions-from-code
$.transform(name, value, callback)Spustí transformaci s tímto požadavkem.transforms
$.authorize(callback)Spustí AUTH() pro tento požadavek a nastaví $.user; bez callbacku vrátí promise.controller-completion-and-cache
$.notmodified(date)Odpoví 304 a vrátí true, když požadavek má hlavičku if-modified-since s tímto datem.controller-completion-and-cache
$.httpcache(date)Nastaví hlavičky cache a last-modified odpovědi.controller-completion-and-cache
$.clear()Odstraní dočasné soubory nahrávání. Odstraní se i tak po skončení požadavku.file-upload
$.autoclear(false)Ponechá nahrané soubory po požadavku, abyste je mohli použít později.upload-lifecycle-and-href
$.custom()Řekne frameworku, že odpovíte sami přes $.res: nic neodešle.controller-completion-and-cache
$.href(key, value)Použijte QUERIFY() jako v odkazovaném receptu, otestovaný nativní pomocník pro odkazy s dotazem.upload-lifecycle-and-href
$.flush(), $.resume(), $.free(), $.cancel()Interní metody: nevolejte je.

Příklad odpovídá vlastnostmi a volá metody, které nepotřebují žádnou přípravu.

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');
	}
}