Κλήσεις ελέγχου, χειροκίνητη εξουσιοδότηση και συνθησιακές απαντήσεις
Είναι συνηθισμένες μέθοδοι ενός controller διαδρομής, διαφορετικές από το πλαίσιο μιας ενέργειας. Το $.jsonstring() παίρνει ήδη σειριοποιημένο JSON. Το $.respond() επιλέγει τη μέθοδο που ονομάζει το $.response.output, με προεπιλογή JSON. Το $.done(true) προωθεί το αποτέλεσμα του callback μέσα στον φάκελο επιτυχίας· ένα άλλο όρισμα επιλέγει μια σταθερή τιμή. Το $.successful(fn) καλεί τη συνάρτησή σας μόνο όταν δεν υπάρχει σφάλμα.
Το await $.authorize() επιλύεται με το αποτέλεσμα της εξουσιοδότησης· ένα ανώνυμο αποτέλεσμα πρέπει ακόμη να το χειριστεί ο κώδικάς σας. Για υπό όρους απαντήσεις περάστε ένα αλφαριθμητικό κεφαλίδας UTC στο $.notmodified(): στην 0.0.19 η σύγκριση είναι ακριβής ισότητα αλφαριθμητικών. Το $.httpcache() ορίζει κεφαλίδες αλλά το $.json() αντικαθιστά την πολιτική cache, οπότε το παράδειγμα στέλνει ένα ακατέργαστο buffer αφού τις ορίσει. Χρησιμοποιήστε δημόσια cache μόνο για δημόσιες αναπαραστάσεις. Το $.custom() μεταβιβάζει την κυριότητα της απάντησης στον χειριστή σας· ολοκληρώστε μόνοι σας την απάντηση του Node.
AUTH(function($) {
if ($.headers['x-demo-user'] === 'alice')
$.success({ id: 'alice' });
else
$.invalid();
});exports.install = function() {
ROUTE('GET /serialized/', $ => $.jsonstring('{"ok":true}'));
ROUTE('GET /respond/', function($) { $.response.output = 'plain'; $.respond('hello'); });
ROUTE('GET /done/', $ => $.done(true)(null, { id: 7 }));
ROUTE('GET /successful/', $ => $.successful(value => $.json({ value: value }))(null, 9));
ROUTE('GET /callback-error/', $ => $.successful(() => $.json({ wrong: true }))('failure'));
ROUTE('GET /manual-auth/', async function($) {
var user = await $.authorize();
if (user)
$.json({ id: $.user.id });
else
$.invalid(401);
});
ROUTE('GET /conditional/', function($) {
var modified = 'Mon, 05 Jan 2026 00:00:00 GMT';
if ($.notmodified(modified))
return;
$.httpcache(modified);
$.binary(Buffer.from('public version 1'), 'text/plain');
});
ROUTE('GET /custom/', function($) {
$.custom();
$.res.writeHead(202, { 'content-type': 'text/plain' });
$.res.end('accepted');
});
};