# Prispôsobte stránky 404 a 401

> Zaregistrujte obslužné funkcie ROUTE('#404') a ROUTE('#401') na nahradenie vstavaných chybových stránok a spustite ich sami cez $.fallback().

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: sk
Content-SHA256: 18f400b89ea9be85c28c32acf521ff94625977ae18d581152a2be8bf7f007fcb
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Keď Total.js nemôže požiadavku obslúžiť, zobrazí vstavanú chybovú stránku. Trasa, ktorej URL je `#` plus stavový kód, ju nahradí: `ROUTE('#404', fn)` pre „nenájdené“, `ROUTE('#401', fn)` pre „neautorizované“ a to isté pre `#400`, `#431` a ďalšie. Obslužná funkcia dostane `$` ako každá trasa, ale **stav nastavujete sami** cez `$.response.status`: Total.js to za vás nerobí, ak existuje vlastná obslužná funkcia. Bez vlastnej funkcie sa použije vstavaná stránka a požiadavky AJAX (hlavička `x-requested-with`) dostanú namiesto HTML chybu vo formáte JSON.

`$.fallback(code)` pošle aktuálnu požiadavku obslužnej funkcii pre `code`, čo je spôsob, ako z vlastného kódu odpovedať 404 pri neexistujúcom zázname alebo 403 pri zakázanom zdroji.

```js controllers/errors.js
exports.install = function() {
	ROUTE('#404', not_found);
	ROUTE('#401', unauthorized);
	ROUTE('GET /items/{id}/', item);
	ROUTE('+GET /private/', private_page);
};

var items = { '1': 'First item' };

function item($) {
	var name = items[$.params.id];
	if (name)
		$.json({ name: name });
	else
		$.fallback(404);
}

function private_page($) {
	$.plain('secret');
}

function not_found($) {
	$.response.status = 404;
	$.html('<h1>Nothing here</h1><p>' + $.url.encode() + ' does not exist.</p>');
}

function unauthorized($) {
	$.response.status = 401;
	$.json({ error: 'Please sign in first' });
}

AUTH(function($) {
	$.invalid();
});
```
