ForgeДокументация
bg

Документация

Обектът на долара е Total.js 5 Търговци

Total.js 5 · total5@0.0.19 referencecontrollerresponses Изпълнено с Total.js 5

Манипулаторът на маршрут получава един обект, на този сайт записван като $. Той описва заявката и отговаря на нея. Отговаряйте само веднъж: след $.json(), $.html() или друг отговор заявката е приключила.

Свойства

СвойствоТипКакво е
$.urlstringПътят на заявката, без низа на заявката.
$.methodstringGET, POST...
$.queryobjectНизът на заявката, анализиран.
$.paramsobjectСегментите {name} на маршрута.
$.bodyobjectТялото, анализирано според типа на съдържанието (JSON, URL-encoded форма, XML или multipart полета).
$.filesarrayКачените файлове на multipart заявка.
$.headersobjectЗаглавията на заявката, с имена с малки букви.
$.ipstringIP адресът; първият адрес от x-forwarded-for, когато заглавието съществува.
$.hoststringЗаглавието host.
$.referrerstringЗаглавието referer.
$.protocolstringhttp или https (и когато прокси го посочва в x-forwarded-proto).
$.extstringРазширението на URL адреса, без точката ($.extension е същото).
$.xhrbooleantrue, когато заглавието x-requested-with е XMLHttpRequest.
$.mobilebooleantrue, когато user agent изглежда като мобилен браузър.
$.robotbooleantrue, когато user agent изглежда като crawler.
$.uastringКратко име на браузъра и системата, например iPhone Safari или Windows Chrome.
$.userobjectПотребителят, одобрен от AUTH(), или нищо.
$.languagestringЕзикът, избран от LOCALIZE().
$.datatypestringjson, urlencoded, multipart, xml, text или binary: типът на тялото на заявката.
$.responseobjectКакво ще бъде изпратено: status, headers и value. Променете $.response.status и $.response.headers, преди да отговорите.
$.req, $.resobjectsЗаявката и отговорът на Node.js.

Методи, които отговарят

МетодКакво правиРецепта
$.json(value)Отговаря с JSON.responses
$.jsonstring(text)Отговаря с текст, който вече е JSON, без да го сериализира отново.controller-completion-and-cache
$.html(text)Отговаря с HTML.responses
$.plain(text)Отговаря с обикновен текст ($.text е същото).responses
$.xml(text)Отговаря с XML.responses
$.empty()Отговаря със статус 204 и без тяло.responses
$.redirect(url, permanent)Пренасочва (302, или 301, когато permanent е true).responses
$.binary(buffer, type, name)Отговаря с байтове и тип на съдържанието.responses
$.file(path, name)Изпраща файл от диска.file-download
$.stream(type, stream, name)Изпраща четим поток.file-download
$.filefs(storage, id)Изпраща файл от FILESTORAGE.filestorage
$.image(options)Създава и изпраща изображение при поискване.images
$.view(name, model)Рендира изглед с layout и отговаря с него.views-and-layouts
$.layout(name)Избира друг layout за следващия $.view().view-sections
$.proxy(url)Препраща заявката към друг URL и отговаря с неговия отговор.proxy
$.respond(value)Отговаря във формата на $.response.output (json, когато не е зададен).controller-completion-and-cache
$.invalid(value)Отговаря с грешка: текст, код на състоянието като 404 или ErrorBuilder.actions-crud
$.fallback(code)Отговаря със страницата на код за грешка, персонализираната, когато съществува ROUTE('#404').error-pages
$.success(value)Отговаря { "success": true }; value се добавя към него.responses
$.callback(err, value)При грешка отговаря $.invalid(err), иначе $.json(value), или $.success(), когато value е undefined. Без аргументи връща функция (err, response), която прави същото.actions-crud
$.successful(fn)Връща функция (err, a, b, c): при грешка отговаря $.invalid(err), иначе извиква fn(a, b, c).controller-completion-and-cache
$.done(arg)Връща функция (err, response): при грешка отговаря $.invalid(err), иначе отговаря с обекта за успех.controller-completion-and-cache

Други методи

МетодКакво правиРецепта
$.cookie(name, value, expiration)Чете бисквитка или записва такава, когато подадете стойност.headers-and-cookies
$.csrf()Създава CSRF токен за този клиент.csrf-protection
$.hostname(path)Адресът на този сървър: протокол, хост и пътят, който подавате.restbuilder
$.action(name, model)Изпълнява действие с тази заявка (потребител, query и params).calling-actions-from-code
$.transform(name, value, callback)Изпълнява трансформация с тази заявка.transforms
$.authorize(callback)Изпълнява AUTH() за тази заявка и задава $.user; връща promise, когато няма callback.controller-completion-and-cache
$.notmodified(date)Отговаря 304 и връща true, когато заявката има заглавие if-modified-since с тази дата.controller-completion-and-cache
$.httpcache(date)Задава заглавията за кеш и last-modified на отговора.controller-completion-and-cache
$.clear()Премахва временните файлове на качването. Те се премахват така или иначе, когато заявката приключи.file-upload
$.autoclear(false)Запазва качените файлове след заявката, за да ги ползвате по-късно.upload-lifecycle-and-href
$.custom()Казва на фреймуърка, че отговаряте сами през $.res: той няма да изпрати нищо.controller-completion-and-cache
$.href(key, value)Използвайте QUERIFY() както в свързаната рецепта, изпитания роден помощник за връзки със заявка.upload-lifecycle-and-href
$.flush(), $.resume(), $.free(), $.cancel()Вътрешни методи: не ги извиквайте.

Примерът отговаря със свойствата и извиква методите, които не се нуждаят от подготовка.

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