Τύπος απόκρισης κόμβου-υπερδραστηρίου («blob») έναντι buffer (true)

ψήφοι
0

Λόγω της απόσυρσης του αιτήματος , αυτήν τη στιγμή ξαναγράφουμε την υπηρεσία αιτήματος στην εφαρμογή κόμβου μας με υπερδραστήριο. Μέχρι στιγμής όλα φαίνονται καλά, ωστόσο δεν είμαστε σίγουροι πώς να ζητήσετε δυαδικά δεδομένα / ροή οκτάδας και να επεξεργαστείτε το πραγματικό σώμα απόκρισης ως Buffer . Σύμφωνα με τα έγγραφα (από την πλευρά του πελάτη) κάποιος πρέπει να χρησιμοποιήσει

superAgentRequest.responseType('blob');

που φαίνεται να λειτουργεί καλά στο NodeJS, αλλά βρήκα επίσης αυτό το ζήτημα github όπου χρησιμοποιούν

superAgentRequest.buffer(true);

που λειτουργεί επίσης. Αναρωτιέμαι λοιπόν ποια είναι η προτιμώμενη μέθοδος για να ζητήσω δυαδικά δεδομένα στο NodeJS;

Δημοσιεύθηκε 22/05/2020 στις 16:51
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
0

Σύμφωνα με την τεκμηρίωση https://visionmedia.github.io/superagent/

Το SuperAgent θα αναλύσει τα γνωστά δεδομένα του σώματος απόκρισης για εσάς, υποστηρίζοντας αυτήν τη στιγμή την εφαρμογή / x-www-form-urlencoded , application / json και multipart / form-data . Μπορείτε επίσης να ρυθμίσετε την αυτόματη ανάλυση για άλλα δεδομένα σώματος απόκρισης:

Μπορείτε να ορίσετε ένα προσαρμοσμένο πρόγραμμα ανάλυσης (που έχει προτεραιότητα έναντι των ενσωματωμένων προγραμμάτων ανάλυσης) με τη μέθοδο .buffer (true) .parse (fn). Εάν η προσωρινή αποθήκευση απόκρισης δεν είναι ενεργοποιημένη (.buffer (false)), τότε το συμβάν απόκρισης θα εκπέμπεται χωρίς να περιμένετε να ολοκληρωθεί ο αναλυτής σώματος, οπότε η απόκριση. Δεν θα είναι διαθέσιμη.

Έτσι, για να αναλύσετε άλλους τύπους απόκρισης, θα πρέπει να ορίσετε .buffer(true).parse(fn) . Αλλά αν δεν θέλετε να αναλύσετε την απόκριση, τότε δεν χρειάζεται να ρυθμίσετε buffer(true) .

Απαντήθηκε 30/05/2020 στις 00:35
πηγή χρήστη

ψήφοι
0

Σύμφωνα με τον πηγαίο κώδικα του superagent , ορίζοντας το responseType ορίζει το buffer επισήμανση ως αληθινή, δηλαδή η ίδια με τη ρύθμιση χειροκίνητα true .

Σε περίπτωση αντιμετώπισης δυαδικών δεδομένων / ροών οκτάτ, χρησιμοποιείται ένα πρόγραμμα ανάλυσης δυαδικών δεδομένων , το οποίο στην πραγματικότητα είναι απλό buffer :

module.exports = (res, fn) => {
  const data = []; // Binary data needs binary storage

  res.on('data', chunk => {
    data.push(chunk);
  });
  res.on('end', () => {
    fn(null, Buffer.concat(data));
  });
};

Και στις δύο περιπτώσεις χρησιμοποιείται αυτό το πρόγραμμα ανάλυσης, το οποίο εξηγεί τη συμπεριφορά. Επομένως, δεν έχει σημασία τι χρησιμοποιείτε για να αντιμετωπίσετε δυαδικά δεδομένα / οκτάδες-ροές.

Απαντήθηκε 03/06/2020 στις 15:59
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more