Το $ αντικείμενο ενός Total.js 5 εμπόρου
Ένας χειριστής διαδρομής λαμβάνει ένα αντικείμενο, που γράφεται $ σε αυτόν τον ιστότοπο. Περιγράφει το αίτημα και το απαντά. Απαντήστε μία φορά: μετά το $.json(), το $.html() ή οποιαδήποτε άλλη απάντηση, το αίτημα έχει ολοκληρωθεί.
Ιδιότητες
| Ιδιότητα | Τύπος | Τι είναι |
|---|---|---|
$.url | string | Η διαδρομή του αιτήματος, χωρίς τη συμβολοσειρά ερωτήματος. |
$.method | string | GET, POST... |
$.query | object | Η συμβολοσειρά ερωτήματος, αναλυμένη. |
$.params | object | Τα τμήματα {name} της διαδρομής. |
$.body | object | Το σώμα, αναλυμένο ανάλογα με τον τύπο περιεχομένου (JSON, φόρμα URL-encoded, XML ή πεδία multipart). |
$.files | array | Τα μεταφορτωμένα αρχεία ενός αιτήματος multipart. |
$.headers | object | Οι κεφαλίδες του αιτήματος, με ονόματα με πεζά. |
$.ip | string | Η διεύθυνση IP· η πρώτη διεύθυνση του x-forwarded-for όταν υπάρχει η κεφαλίδα. |
$.host | string | Η κεφαλίδα host. |
$.referrer | string | Η κεφαλίδα referer. |
$.protocol | string | http ή https (και όταν ένας proxy το δηλώνει στο x-forwarded-proto). |
$.ext | string | Η επέκταση του URL, χωρίς την τελεία (το $.extension είναι το ίδιο). |
$.xhr | boolean | true όταν η κεφαλίδα x-requested-with είναι XMLHttpRequest. |
$.mobile | boolean | true όταν ο user agent μοιάζει με κινητό πρόγραμμα περιήγησης. |
$.robot | boolean | true όταν ο user agent μοιάζει με crawler. |
$.ua | string | Ένα σύντομο όνομα του προγράμματος περιήγησης και του συστήματος, όπως iPhone Safari ή Windows Chrome. |
$.user | object | Ο χρήστης που ενέκρινε το AUTH(), ή τίποτα. |
$.language | string | Η γλώσσα που επέλεξε το LOCALIZE(). |
$.datatype | string | json, urlencoded, multipart, xml, text ή binary: ο τύπος του σώματος του αιτήματος. |
$.response | object | Τι θα σταλεί: status, headers και value. Αλλάξτε τα $.response.status και $.response.headers πριν απαντήσετε. |
$.req, $.res | objects | Το αίτημα και η απάντηση του Node.js. |
Μέθοδοι που απαντούν
| Μέθοδος | Τι κάνει | Συνταγή |
|---|---|---|
$.json(value) | Απαντά με JSON. | responses |
$.jsonstring(text) | Απαντά με ένα κείμενο που είναι ήδη JSON, χωρίς να το σειριοποιήσει ξανά. | controller-completion-and-cache |
$.html(text) | Απαντά με HTML. | responses |
$.plain(text) | Απαντά με απλό κείμενο (το $.text είναι το ίδιο). | responses |
$.xml(text) | Απαντά με XML. | responses |
$.empty() | Απαντά με κατάσταση 204 και χωρίς σώμα. | responses |
$.redirect(url, permanent) | Ανακατευθύνει (302, ή 301 όταν το permanent είναι true). | responses |
$.binary(buffer, type, name) | Απαντά με byte και έναν τύπο περιεχομένου. | responses |
$.file(path, name) | Στέλνει ένα αρχείο από τον δίσκο. | file-download |
$.stream(type, stream, name) | Στέλνει μια αναγνώσιμη ροή. | file-download |
$.filefs(storage, id) | Στέλνει ένα αρχείο ενός FILESTORAGE. | filestorage |
$.image(options) | Δημιουργεί και στέλνει μια εικόνα κατά παραγγελία. | images |
$.view(name, model) | Αποδίδει μια προβολή με το layout και απαντά με αυτήν. | views-and-layouts |
$.layout(name) | Επιλέγει άλλο layout για το επόμενο $.view(). | view-sections |
$.proxy(url) | Προωθεί το αίτημα σε άλλο URL και απαντά με την απάντησή του. | proxy |
$.respond(value) | Απαντά στη μορφή του $.response.output (json όταν δεν έχει οριστεί). | controller-completion-and-cache |
$.invalid(value) | Απαντά με σφάλμα: ένα κείμενο, έναν κωδικό κατάστασης όπως 404 ή ένα ErrorBuilder. | actions-crud |
$.fallback(code) | Απαντά με τη σελίδα ενός κωδικού σφάλματος, την προσαρμοσμένη όταν υπάρχει ROUTE('#404'). | error-pages |
$.success(value) | Απαντά { "success": true }· το value προστίθεται σε αυτό. | responses |
$.callback(err, value) | Με σφάλμα απαντά $.invalid(err), αλλιώς $.json(value), ή $.success() όταν το value είναι undefined. Χωρίς ορίσματα επιστρέφει μια συνάρτηση (err, response) που κάνει το ίδιο. | actions-crud |
$.successful(fn) | Επιστρέφει μια συνάρτηση (err, a, b, c): με σφάλμα απαντά $.invalid(err), αλλιώς καλεί το fn(a, b, c). | controller-completion-and-cache |
$.done(arg) | Επιστρέφει μια συνάρτηση (err, response): με σφάλμα απαντά $.invalid(err), αλλιώς απαντά με το αντικείμενο επιτυχίας. | controller-completion-and-cache |
Άλλες μέθοδοι
| Μέθοδος | Τι κάνει | Συνταγή |
|---|---|---|
$.cookie(name, value, expiration) | Διαβάζει ένα cookie, ή γράφει ένα όταν περνάτε τιμή. | headers-and-cookies |
$.csrf() | Δημιουργεί ένα διακριτικό CSRF για αυτόν τον πελάτη. | csrf-protection |
$.hostname(path) | Η διεύθυνση αυτού του διακομιστή: πρωτόκολλο, κεντρικός υπολογιστής και η διαδρομή που περνάτε. | restbuilder |
$.action(name, model) | Εκτελεί μια ενέργεια με αυτό το αίτημα (χρήστης, query και params). | calling-actions-from-code |
$.transform(name, value, callback) | Εκτελεί έναν μετασχηματισμό με αυτό το αίτημα. | transforms |
$.authorize(callback) | Εκτελεί το AUTH() για αυτό το αίτημα και ορίζει το $.user· επιστρέφει promise όταν δεν υπάρχει callback. | controller-completion-and-cache |
$.notmodified(date) | Απαντά 304 και επιστρέφει true όταν το αίτημα έχει την κεφαλίδα if-modified-since με αυτή την ημερομηνία. | controller-completion-and-cache |
$.httpcache(date) | Ορίζει τις κεφαλίδες cache και το last-modified της απάντησης. | controller-completion-and-cache |
$.clear() | Αφαιρεί τα προσωρινά αρχεία της μεταφόρτωσης. Αφαιρούνται ούτως ή άλλως όταν τελειώσει το αίτημα. | file-upload |
$.autoclear(false) | Κρατά τα μεταφορτωμένα αρχεία μετά το αίτημα, ώστε να τα χρησιμοποιήσετε αργότερα. | upload-lifecycle-and-href |
$.custom() | Λέει στο framework ότι απαντάτε εσείς μέσω του $.res: δεν θα στείλει τίποτα. | controller-completion-and-cache |
$.href(key, value) | Χρησιμοποιήστε το QUERIFY() όπως στη συνδεδεμένη συνταγή, τον δοκιμασμένο εγγενή βοηθό για συνδέσμους με query. | upload-lifecycle-and-href |
$.flush(), $.resume(), $.free(), $.cancel() | Εσωτερικές μέθοδοι: μην τις καλείτε. |
Το παράδειγμα απαντά με τις ιδιότητες και καλεί τις μεθόδους που δεν χρειάζονται προετοιμασία.
exports.install = function() {
ROUTE('GET /info/{a}/{b}/', info);
ROUTE('POST /body/ @json', body);
ROUTE('GET /answers/{kind}/', answers);
ROUTE('GET /callback/{kind}/', callback);
};
function info($) {
$.json({
url: $.url,
method: $.method,
query: $.query,
params: $.params,
ext: $.ext,
xhr: $.xhr,
mobile: $.mobile,
robot: $.robot,
ua: $.ua,
ip: $.ip,
host: $.host,
referrer: $.referrer,
protocol: $.protocol,
hostname: $.hostname('/x/'),
datatype: $.datatype
});
}
function body($) {
$.json({ body: $.body, datatype: $.datatype });
}
function answers($) {
switch ($.params.kind) {
case 'json': return $.json({ a: 1 });
case 'jsonstring': return $.jsonstring('{"a":1}');
case 'html': return $.html('<b>x</b>');
case 'plain': return $.plain('x');
case 'xml': return $.xml('<a>1</a>');
case 'empty': return $.empty();
case 'redirect': return $.redirect('/x/', true);
case 'binary': return $.binary(Buffer.from('abc'), 'application/octet-stream');
case 'invalid': return $.invalid(409);
case 'success': return $.success({ id: 7 });
case 'status': $.response.status = 201; return $.json({ created: true });
case 'header': $.response.headers['x-example'] = 'yes'; return $.json({});
}
}
function callback($) {
switch ($.params.kind) {
case 'error': return $.callback('failed');
case 'value': return $.callback(null, { v: 1 });
case 'nothing': return $.callback(null);
case 'function': return setImmediate($.callback(), null, { later: true });
case 'successful': return setImmediate($.successful(function(a, b) { $.json({ a: a, b: b }); }), null, 'x', 'y');
}
}