# Az út szintézisét Total.js 5

> Jelölje ki a Total.js útvonalakat módszerekkel, URL-paraméterekkel, vad térképekkel, zászlókkal, hitelesítéssel, közepes szoftverrel és akciókkal.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: hu
Content-SHA256: 2cc98277dcee8d461e1609fccdacba1c22ad755930ef3221b644a2fd82ab6108
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

A `ROUTE(definition, handler)` útvonalat deklarál. A definíció egyetlen szöveg ezekkel a részekkel, ebben a sorrendben:

`[+|-]METHOD /url/{param}/ [@flag ...] [#middleware ...] [<limit] [--> *Action ...]`

| Rész | Jelentés |
|---|---|
| `METHOD` | `GET`, `POST`, `PUT`, `PATCH`, `DELETE`vagy `SOCKET` Az A WebSocket és `FILE` URL-k egy kiterjesztéssel: egy olyan URL, mint `/a.txt` Soha nem felel meg a `GET` Az út. |
| `+` vagy `-` a metódus előtt | A `+` csak azokat a kéréseket fogadja el, amelyeket az `AUTH()` jóváhagyott, a `-` csak a névteleneket; minden más kérés 401-et kap. Előtag nélkül az útvonal nyitott. |
| `/url/` | Az útvonal. Írd ki a záró perjelet: az útvonalakat vele hasonlítja össze a rendszer. |
| `{name}` | Az útvonal egy szegmense, amelyet a `$.params.name` olvas. |
| `*` az utolsó szegmensként | Minden alatta lévő útvonalra illeszkedik. A `*` nélküli útvonal specifikusabb, és nyer. |
| `@flag` | Egy feltétel a kérésre: `@json`, `@xml`, `@xhr`, `@upload`, `@debug`, `@release`, `@mobile`, `@robot`, `@referer` (vagy `@referrer`). |
| `#name` | A `MIDDLEWARE(name, fn)`-nel regisztrált middleware. |
| `<limit` | A `<10kb` a törzs méretét, a `<30s` a kérés idejét korlátozza. |
| `--> *Action` | Egy vagy több műveletet futtat a kérés bemenetével, és az eredménnyel válaszol. |
| `#404`, `#401`... | Az az útvonal, amelynek definíciója csak `#` és egy állapotkód, lecseréli a hibaoldalt. |

A kérést az első illeszkedő útvonal kezeli. Az a kérés, amely nem felel meg egy útvonal jelzőinek, a következő útvonalra lép, és 404-gyel végződik, ha egy sem illeszkedik; az a kérés, amely nem felel meg a `+` vagy `-` előtagnak, 401-et kap. **Az ugyanazon az URL-en lévő, jelzők nélküli útvonal mindig nyer a jelzőkkel ellátott útvonallal szemben**, ezért soha ne tedd mindkettőt ugyanarra az URL-re.

```js definitions/auth.js
AUTH(function($) {
	if ($.headers['x-token'] === 'secret')
		$.success({ id: '1' });
	else
		$.invalid();
});

MIDDLEWARE('stamp', function($, next) {
	$.response.headers['x-stamp'] = 'yes';
	next();
});

NEWACTION('Echo/one', { name: 'one', input: '*text:String', action: ($, model) => $.callback({ one: model.text }) });
NEWACTION('Echo/two', { name: 'two', action: ($, model) => $.callback({ two: true }) });
```

```js controllers/syntax.js
exports.install = function() {
	ROUTE('GET /plain/', plain);
	ROUTE('GET /users/{id}/', user);
	ROUTE('GET /files/*', files);
	ROUTE('POST /json/ @json', json);
	ROUTE('+GET /private/', plain);
	ROUTE('-GET /guest/', plain);
	ROUTE('GET /stamped/ #stamp', plain);
	ROUTE('POST /echo/ @json --> *Echo/one');
	ROUTE('FILE /robots-example.txt', file);
	ROUTE('#404', missing);
};

function plain($) {
	$.json({ ok: true });
}

function user($) {
	$.json({ id: $.params.id });
}

function files($) {
	$.json({ url: $.url });
}

function json($) {
	$.json({ body: $.body });
}

function file($) {
	$.plain('from a FILE route');
}

function missing($) {
	$.response.status = 404;
	$.plain('custom 404');
}
```
