düğüm-süper yanıt yanıtı Arabelleğe karşı tür ('blob') (true)

oy
0

İsteğin kullanımdan kaldırılması nedeniyle, şu anda düğüm uygulamamızda istek hizmetini süper yetkili ile yeniden yazıyoruz. Şimdiye kadar her şey iyi görünüyor, ancak ikili veri / sekizlik akışını nasıl isteyeceğimizden ve gerçek yanıt gövdesini bir Buffer . Dokümanlara göre (müşteri tarafında)

superAgentRequest.responseType('blob');

Bu NodeJS üzerinde iyi çalışıyor gibi görünüyor, ama aynı zamanda kullandıkları github sorununu buldum

superAgentRequest.buffer(true);

ki bu da işe yarıyor. Bu yüzden NodeJS ikili veri istemek için tercih edilen yöntemin ne olduğunu merak ediyorum?

Oluştur 22/05/2020 saat 16:51
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Belgelere göre https://visionmedia.github.io/superagent/

SuperAgent sizin için bilinen yanıt gövdesi verilerini ayrıştırır ve şu anda application / x-www-form-urlencoded , application / json ve multipart / form-data'larını desteklemektedir . Diğer yanıt gövdesi verileri için otomatik ayrıştırmayı da ayarlayabilirsiniz:

.Buffer (true) .parse (fn) yöntemiyle özel bir ayrıştırıcı (yerleşik ayrıştırıcılara göre öncelik taşır) ayarlayabilirsiniz. Yanıt arabelleğe alma etkinleştirilmezse (.buffer (false)), yanıt ayrıştırıcısı, üst öğe ayrıştırıcısının bitmesini beklemeden yanıtlanır, bu nedenle yanıt. Kimse kullanılamaz.

Diğer yanıt türlerini ayrıştırmak için, .buffer(true).parse(fn) . Ancak yanıtı ayrıştırmak istemiyorsanız, buffer(true) .

Cevap 30/05/2020 saat 00:35
kaynak kullanıcı

oy
0

Superagent'ın kaynak koduna göre, responseType ayarlar buffer true olarak işaretleyin, yani manuel olarak ayarlamakla aynı true .

İkili veri / sekizli akışlarla uğraşmak durumunda, aslında sadece basit bir tampon olan bir ikili veri ayrıştırıcı kullanılır:

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

Her iki durumda da davranışı açıklayan bu ayrıştırıcı kullanılır. Bu nedenle, ikili veri / sekizli akışlarla uğraşmak için ne kullandığınız önemli değildir.

Cevap 03/06/2020 saat 15:59
kaynak kullanıcı

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