ForgeTotal.js 5
cs

Total.js 5

Omezení trasy pomocí flagů

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

Flagy začínají @ a jdou za URL. Trasa odpovídá, jen když požadavek splňuje všechny její flagy; jinak Total.js zkusí další trasu pro stejnou URL a odpoví 404, když nesedí žádná. Užitečné flagy:

  • @json a @xml: tělo musí být JSON nebo XML
  • @xhr: požadavek musí být AJAX (hlavička x-requested-with)
  • @upload: tělo musí být multipart/form-data
  • @debug a @release: trasa existuje jen v tomto režimu
  • @mobile a @robot: klient je mobilní prohlížeč nebo crawler
controllers/data.js
exports.install = function() {
	ROUTE('POST /data/ @json', json_only);
	ROUTE('POST /data/ @xml', xml_only);

	// Careful: a route with flags has a lower priority than the same URL without flags
	ROUTE('POST /mixed/ @json', json_only);
	ROUTE('POST /mixed/', anything);
};

function json_only($) {
	$.json({ handler: 'json' });
}

function xml_only($) {
	$.json({ handler: 'xml' });
}

function anything($) {
	$.json({ handler: 'anything' });
}

Nikdy nemíchej trasu s flagy a trasu bez flagů na stejné URL: ta bez flagů se kontroluje první a vezme všechny požadavky, takže trasa s flagy se nikdy nedosáhne.