ForgeDocumentație
ro

Documentație

Obiectul unui Total.js 5

Total.js 5 · total5@0.0.19 referencecontrollerresponses Executată cu Total.js 5

Un handler de rută primește un obiect, scris $ pe acest site. Descrie cererea și îi răspunde. Răspunde o singură dată: după $.json(), $.html() sau orice alt răspuns, cererea s-a terminat.

Proprietăți

ProprietateTipCe este
$.urlstringCalea cererii, fără șirul de interogare.
$.methodstringGET, POST...
$.queryobjectȘirul de interogare, analizat.
$.paramsobjectSegmentele {name} ale rutei.
$.bodyobjectCorpul, analizat după tipul de conținut (JSON, formular URL-encoded, XML sau câmpuri multipart).
$.filesarrayFișierele încărcate ale unei cereri multipart.
$.headersobjectAntetele cererii, cu nume cu litere mici.
$.ipstringAdresa IP; prima adresă din x-forwarded-for când antetul există.
$.hoststringAntetul host.
$.referrerstringAntetul referer.
$.protocolstringhttp sau https (și când un proxy o indică în x-forwarded-proto).
$.extstringExtensia URL-ului, fără punct ($.extension este la fel).
$.xhrbooleantrue când antetul x-requested-with este XMLHttpRequest.
$.mobilebooleantrue când user agent-ul arată ca un browser mobil.
$.robotbooleantrue când user agent-ul arată ca un crawler.
$.uastringUn nume scurt al browserului și al sistemului, precum iPhone Safari sau Windows Chrome.
$.userobjectUtilizatorul aprobat de AUTH(), sau nimic.
$.languagestringLimba aleasă de LOCALIZE().
$.datatypestringjson, urlencoded, multipart, xml, text sau binary: tipul corpului cererii.
$.responseobjectCe va fi trimis: status, headers și value. Schimbă $.response.status și $.response.headers înainte de a răspunde.
$.req, $.resobjectsCererea și răspunsul Node.js.

Metode care răspund

MetodăCe faceRețetă
$.json(value)Răspunde cu JSON.responses
$.jsonstring(text)Răspunde cu un text care este deja JSON, fără a-l serializa din nou.controller-completion-and-cache
$.html(text)Răspunde cu HTML.responses
$.plain(text)Răspunde cu text simplu ($.text este la fel).responses
$.xml(text)Răspunde cu XML.responses
$.empty()Răspunde cu statusul 204 și fără corp.responses
$.redirect(url, permanent)Redirecționează (302, sau 301 când permanent este true).responses
$.binary(buffer, type, name)Răspunde cu octeți și un tip de conținut.responses
$.file(path, name)Trimite un fișier de pe disc.file-download
$.stream(type, stream, name)Trimite un stream care poate fi citit.file-download
$.filefs(storage, id)Trimite un fișier dintr-un FILESTORAGE.filestorage
$.image(options)Creează și trimite o imagine la cerere.images
$.view(name, model)Randează o vizualizare cu layout și răspunde cu ea.views-and-layouts
$.layout(name)Alege un alt layout pentru următorul $.view().view-sections
$.proxy(url)Redirecționează cererea către alt URL și răspunde cu răspunsul acestuia.proxy
$.respond(value)Răspunde în formatul $.response.output (json când nu este setat).controller-completion-and-cache
$.invalid(value)Răspunde cu o eroare: un text, un cod de stare precum 404 sau un ErrorBuilder.actions-crud
$.fallback(code)Răspunde cu pagina unui cod de eroare, cea personalizată când există ROUTE('#404').error-pages
$.success(value)Răspunde { "success": true }; value este adăugat la el.responses
$.callback(err, value)Cu o eroare răspunde $.invalid(err), altfel $.json(value), sau $.success() când value este undefined. Fără argumente returnează o funcție (err, response) care face același lucru.actions-crud
$.successful(fn)Returnează o funcție (err, a, b, c): cu o eroare răspunde $.invalid(err), altfel apelează fn(a, b, c).controller-completion-and-cache
$.done(arg)Returnează o funcție (err, response): cu o eroare răspunde $.invalid(err), altfel răspunde cu obiectul de succes.controller-completion-and-cache

Alte metode

MetodăCe faceRețetă
$.cookie(name, value, expiration)Citește un cookie sau scrie unul când transmiți o valoare.headers-and-cookies
$.csrf()Creează un token CSRF pentru acest client.csrf-protection
$.hostname(path)Adresa acestui server: protocol, gazdă și calea pe care o transmiți.restbuilder
$.action(name, model)Rulează o acțiune cu această cerere (utilizator, query și params).calling-actions-from-code
$.transform(name, value, callback)Rulează o transformare cu această cerere.transforms
$.authorize(callback)Rulează AUTH() pentru această cerere și setează $.user; returnează un promise când nu există callback.controller-completion-and-cache
$.notmodified(date)Răspunde 304 și returnează true când cererea are antetul if-modified-since cu acea dată.controller-completion-and-cache
$.httpcache(date)Setează antetele de cache și last-modified ale răspunsului.controller-completion-and-cache
$.clear()Șterge fișierele temporare ale încărcării. Sunt șterse oricum când cererea se termină.file-upload
$.autoclear(false)Păstrează fișierele încărcate după cerere, pentru a le putea folosi mai târziu.upload-lifecycle-and-href
$.custom()Spune framework-ului că răspunzi tu însuți prin $.res: nu va trimite nimic.controller-completion-and-cache
$.href(key, value)Folosește QUERIFY() ca în rețeta legată, helperul nativ testat pentru linkuri cu query.upload-lifecycle-and-href
$.flush(), $.resume(), $.free(), $.cancel()Metode interne: nu le apela.

Exemplul răspunde cu proprietățile și apelează metodele care nu necesită pregătire.

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