node-superagent responseType ('blob') és puffer (igaz)

szavazat
0

A kérés elavulása miatt a csomópont-alkalmazásban a kérési szolgáltatást jelenleg felülírjuk. Eddig minden jól néz ki, azonban nem vagyunk biztosak abban, hogyan lehet bináris adatot / octet-stream-t kérni, és az aktuális választestet Buffer . A dokumentumok szerint (az ügyfél oldalon) kell használniuk

superAgentRequest.responseType('blob');

ami úgy tűnik, jól működik a NodeJS-en, de ott találtam ezt a github kérdést is, ahol használják

superAgentRequest.buffer(true);

ami ugyanúgy működik. Tehát kíváncsi vagyok, hogy mi a preferált módszer bináris adatok kérésére a NodeJS-ben?

A kérdést 22/05/2020 16:51
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

A dokumentáció szerint: https://visionmedia.github.io/superagent/

A SuperAgent elemzi az Ön számára az ismert választest adatokat, jelenleg támogatja az application / x-www-form-urlencoded , az application / json és a multipart / form-adatokat . Beállíthatja az automatikus elemzést más választest-adatokra is:

Beállíthat egyéni elemzőt (amely elsőbbséget élvez a beépített elemzőkkel szemben) a .buffer (true) .parse (fn) metódussal. Ha a válasz pufferelése nincs engedélyezve (. Puffer (hamis)), akkor a válasz esemény úgy kerül kibocsátásra, hogy nem várja meg a test elemző befejeződését, így a response.body nem lesz elérhető.

Tehát a többi választípus elemzéséhez be kell állítania .buffer(true).parse(fn) . De ha nem akarja elemezni a választ, akkor nem kell beállítania buffer(true) .

Válaszolt 30/05/2020 00:35
a forrás felhasználó

szavazat
0

A superagent forráskódja szerint a responseType beállítja a buffer jelölés igaz értékre, azaz ugyanaz, mint a kézi beállítása true .

A bináris adat / oktet-adatfolyamokkal történő foglalkozás esetén egy bináris adat-elemzőt használnak, amely valójában csak egy egyszerű puffer :

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));
  });
};

Mindkét esetben ezt az elemzőt használják, amely magyarázza a viselkedést. Tehát nem igazán számít, hogy mit használ bináris adat / oktet-adatfolyamokkal.

Válaszolt 03/06/2020 15:59
a forrás felhasználó

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