node-superagent responseType ('blob') vs. buffer (true)

stemmer
0

På grunn av avskrivningen av forespørselen , skriver vi for øyeblikket forespørselstjenesten i node-appen vår med superagent. Foreløpig ser alle bra ut, men vi er ikke helt sikre på hvordan vi kan be om binær data / oktettstrøm og å behandle det faktiske responsorganet som et Buffer . I følge dokumentene (på klientsiden) bør man bruke

superAgentRequest.responseType('blob');

som ser ut til å fungere fint på NodeJS, men jeg har også funnet dette github- problemet der de bruker

superAgentRequest.buffer(true);

som fungerer like bra. Så jeg lurer på hva den foretrukne metoden å be om binære data i NodeJS er?

Publisert på 22/05/2020 klokken 16:51
kilden bruker
På andre språk...                            


2 svar

stemmer
0

I henhold til dokumentasjonen https://visionmedia.github.io/superagent/

SuperAgent vil analysere kjente svar-kroppsdata for deg, som for øyeblikket støtter applikasjons / x-www-form-urlencoded , application / json , og multipart / form-data . Du kan også konfigurere automatisk parsing for andre svar fra kroppsdata:

Du kan angi en tilpasset parser (som har forrang for innebygde analysører) med metoden .buffer (true) .parse (fn). Hvis svarbuffering ikke er aktivert (.buffer (falsk)), vil responshendelsen sendes ut uten å vente på at kroppsdeleren er ferdig, så respons.body vil ikke være tilgjengelig.

Så for å analysere andre svarstyper, må du stille inn .buffer(true).parse(fn) . Men hvis du ikke vil analysere svar, trenger du ikke stille buffer(true) .

Svarte 30/05/2020 kl. 00:35
kilden bruker

stemmer
0

I henhold til superagents kildekode, angir du responseType setter buffer flagg til true, dvs. det samme som å sette det manuelt til true .

I tilfelle å håndtere binærdata / oktettstrømmer, brukes en binær dataparser , som faktisk bare er en enkel 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));
  });
};

I begge tilfeller brukes denne parseren, noe som forklarer oppførselen. Så det spiller egentlig ingen rolle hva du bruker for å takle binære data / oktettstrømmer.

Svarte 03/06/2020 kl. 15:59
kilden bruker

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