Az út szintézisét Total.js 5
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, DELETEvagy 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.
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 }) });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');
}