# Restrângerea unei rute cu flag-uri

> Adaugă @flag-uri precum @json, @xml sau @upload ca o rută să se potrivească doar cererilor pentru care este făcută.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: ro
Content-SHA256: 86ec283f3286a7fa6f9be07dfe2ed005dba7e127d9ac4d7c343df21f1083bda6
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Flag-urile încep cu `@` și merg după URL. O rută se potrivește doar când cererea satisface toate flag-urile ei; altfel Total.js încearcă următoarea rută pentru același URL și răspunde 404 dacă niciuna nu se potrivește. Flag-uri utile:

- `@json` și `@xml`: body-ul trebuie să fie JSON sau XML
- `@xhr`: cererea trebuie să fie o cerere AJAX (antetul `x-requested-with`)
- `@upload`: body-ul trebuie să fie `multipart/form-data`
- `@debug` și `@release`: ruta există doar în acel mod
- `@mobile` și `@robot`: clientul este un browser mobil sau un crawler

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

Nu amesteca niciodată o rută cu flag-uri și o rută fără flag-uri pe același URL: cea fără flag-uri este verificată prima și preia toate cererile, deci ruta cu flag-uri nu este niciodată atinsă.
