UNPKG

learnyounode

Version:

Learn You The Node.js For Much Win! An intro to Node.js via a set of self-guided workshops.

58 lines (36 loc) 2.77 kB
`http-topla.js` isimli bir dosya oluşturunuz. İlk argüman olarak bir URL kabul eden ve verilen bu URL'e HTTP GET isteği atan bir program yazınız. Sunucudan gelen **bütün** verileri(sadece ilk "data" olayı değil) toplayıp konsol(stdout)a iki satır olarak yazın. Konsola yazdığınız ilk satır, sunucudan gelen cevaptaki karater sayısını içermelidir. İkinci satır ise, sunucudan gelen cevabu string olarak içermelidir. ---------------------------------------------------------------------- ## İPUÇLARI Bu problemi iki farklı şekilde ele alabilirsiniz: **1)** Birden çok "data" olayınından verileri toplayıp arka arkaya ekledikten sonra yazdırabilirsiniz. "end" olayını da akışın(stream) bittiğini anlamak ve konsola yazdırmak için kullabilirsiniz. **2)** Veri akışını toplamakta çekebileceğiniz zorluklar için üçünü parti kütüphaneler kullanabilirisiniz. Bu problemi çözmek adına iki farklı paket kullanışlı API sunar (birbilerine çok benziyorlar): `bl` (Buffer List) ve `concat-stream`; birini seçin <https://npmjs.com/bl> <https://npmjs.com/concat-stream> Node kütüphanesi(paket, package) yüklemek için Node Package Manager(Node Paket Yönetici) `npm` i kullanın. Aşağıdaki şekilde bir komutla paketi yükleyebilirsiniz: ```sh $ npm install bl ``` Bu komut paketin en son sürümünü `node_modules` isimli bir dizinin altına indirir. Bu dizinin altında bulunan bütün paketler, ana program dosyanızın için `require` ile içeri alınıp('./' ön eki gerektirmeden) kullanılabilir: ```js const bl = require('bl') ``` Node, paketin nerde olduğunu anlamak için, önce çekirdek modüllerine sonra da `node_modules` dizini altına bakar. Eğer internet bağlantınız yoksa, `node_modules` isimli bir dizin oluşturup {apname} yüklenme dizinindeki dosyaları o dizin altına taşıyabilirsiniz: {rootdir:/node_modules/bl} {rootdir:/node_modules/concat-stream} `bl` ve `concat-stream` paketleri akışları birbirine *bağlayabilir(pipe)* ve sizin için verileri toplar. Akış bittiğinde callback fonksiyonu bu toplanan veri ile çağrılır: ```js response.pipe(bl(function (err, data) { /* ... */ })) // or response.pipe(concatStream(function (data) { /* ... */ })) ``` Buffer nesnelerini stringe dönüştürmek için `data.toString()` methodunu kullanmak zorunda kalacağınızı aklınızda bulundurunuz. İki modülünün dökümantasyonu da {appname} kurulumu ile birlikte sisteminize yüklendi ve tarayıcınızdan aşağıdaki adresleri açarak erişebilirsiniz: {rootdir:/docs/bl.html} {rootdir:/docs/concat-stream.html} Programın doğru olup olmadığını kontrol etmek için aşağıdaki komutu kullanın: ```sh $ {appname} verify http-topla.js ```