Personnaliser les pages 404 et 401
Quand Total.js ne peut pas servir une requête, il affiche une page d'erreur intégrée. Une route dont l'URL est # suivi du code de statut la remplace : ROUTE('#404', fn) pour « introuvable », ROUTE('#401', fn) pour « non autorisé », et de même pour #400, #431 et d'autres. Le gestionnaire reçoit $ comme n'importe quelle route, mais vous définissez vous-même le statut avec $.response.status : Total.js ne le fait pas à votre place quand un gestionnaire personnalisé existe. Sans gestionnaire personnalisé, la page intégrée est utilisée et les requêtes AJAX (en-tête x-requested-with) reçoivent une erreur JSON au lieu de HTML.
$.fallback(code) envoie la requête courante au gestionnaire de code, ce qui permet de répondre 404 pour un enregistrement inexistant ou 403 pour une ressource interdite depuis votre propre code.
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();
});