Node.js Request Kullanımı
Hepinize merhaba dostlarım :). Bu yazımda sizlere node js programlama dilinde özellikle apiler ile çalışırken sıklıkla kullandığımız bir yapı olan, veya bir url adresi ile çalışacağımız zamanlarda kullanacağımız bir yapı olan request kütüphanesinden bahsedeceğim :). İsmi İngilizce'de aşina olduğumuz bir kelimedir yani istek anlamına gelen bu kelimenin kodlardaki kullanımı da mantıksal olarak bir url adresine istekte bulunmak olarak geçer :). Örnek vermek gerekirse bir api ile uğraşıyorsunuz ve stok apisi olsun bu varsayalım. Sizin bir istek attığınızda ürünlerin ve stok bilgilerinin listelendiği bilgileri çekmek için o adrese browser üzerinden gitmek yerine gelen veriyi request kütüphanesi ile yazıp ekrana bastırmanız fayda sağlayacaktır :). Heyecanlandığınızı seziyorum dostlarım :). Sözü daha fazla uzatmadan konumuza giriş yapalım
Proje Ortamını Oluşturalım
Evet dostlarım :). Artık projemizi oluşturmaya yavaştan yavaştan girişimizi yapalım :). Öncelikle proje dosyamızı açıp termianalimize girelim ve
npm init
komutumuzu yazalım. Bu kurulumla projemizi npm ile ilişkilendiriyoruz (node.js proje oluşturma yazıma buradan ulaşabilirsiniz). Kodumuzu yazdıktan sonra enter enter yaparak projemizi npm ile iliişkilendiriyoruz dostlarım. Daha sonrasında ise kullanacağımız modülü yükleyelim :)
Request Modülünü Yükleyelim
npm install --save request@2.60.0
şeklinde npm paket yöneticisinden projemize request kütüphanesinin 2.60.0 versiyonunu yüklüyoruz :). Modülümüzü yüklediğimize göre şimdi gelelim bir example.js dosyası oluşturalım. Daha sonra içerisine bu modülümüzü kullanacağımızı söyleyelim. Öncelikle example.js dosyasını oluşturunca içerisine kodlarımızı yazmaya başlayalım
Kodlarımızı Yazmaya Başlayalım
const request = require('request')
Bu kod ile biz javascript dosyamızın içerisinde yani example.js dosyamızın içerisinde request modülümüzü kullanacağımızı ve bu moddülü kullanmamızın gerektiğini söylüyoruz. Daha sonra ise istekte bulunacağımız url adresini belirtiyoruz. Ben örnek olarak bir url oluşturdum yani kendim localhost alanımda bir url ye istek atacağım. Hemen bunu da yazalım
const request = require('request') // modülümüzü yükledik
const url = "http://127.0.0.1:8000/" // url adresimizi belirttik
request({
url : url,
json : true
},function (err,res,body){
if (err) throw err
console.log(body)
})
şimdi diyorsunuz ki hocam çok karmaşık oldu :). Dostlarım sakın gözünüzü korkutmayın olayın aslını anlatacağım size. Öncelikle yukarı kısımlarda example.js dosyamızın içerisinde request modülünü kullanacağımızı ve hangi url adresine istek yapacağımızı belirttik. Bu kısma kadar tamamız. Daha sonra da request methodumuzu açtık. Bu method 2 parametre alıyor:
- Parametre: İstek yapacağımız url ve gelecek olan sonucun json tipinde mi gelleceğinin belirtilmesi
- Parametre: Bize dönecek olan callback fonksiyon
şeklinde kodlarımızı yazdık şu an. İlk parametrede yazdığımız kısımda şunları diyoruz:
{
url : url, // istek yapacağımız url
json : true // geri dönecek olan değer json tipinde mi olacak (true ise evet, false ise hayır)
}
şeklinde kodumuzu belirtiyoruz. Daha sonra ise ikinci parametrede yani callback fonksiyon da 3 parametre alıyor. Bunlara bakacak olursak
- Parametre: err ----> yani istek esnasında herhangi bir hata oluşursa bize geri dönecek olan parametre
- Parametre: res-----> istek sonrasında bize dönecek olan header bilgisi (200,301,500 gibi status kodları)
- Parametre: body----> istekten bize gelecek olan cevap (bize dönecek olan içerik) olarak adlandırılır
bu callback fonksiyonların parametrelerini de gördüğümüze göre şimdi gelelim ekranımızda kodlarımızı yavaştan yavaştan çalıştırmaya. Öncelikle fonksiyonumuzda response yani res kısmını yazdıralım. Bunun için kodlarımızda gelip aşağıdaki gibi bir düzenleme yapıyoruz
const request = require('request')
const url = "http://127.0.0.1:8000/"
request({
url : url,
json : true
},function (err,res,body){
if (err) throw err
console.log(res) // header bilgisini alacağız
})
şeklinde console.log() kısmında ekranımıza header bilgisinin bastırılma işlemini ayarlıyoruz. Daha sonra terminalimizi açıp
node example.js
komutumuzu yazıyoruz. Enter tuşuna basar basmaz karşımıza
IncomingMessage {
_readableState: ReadableState {
encoding: null,
[Symbol(kPaused)]: false
},
readable: false,
_events: [Object: null prototype] {
},
_eventsCount: 4,
_maxListeners: undefined,
socket: Socket {
connecting: false,
_hadError: false,
[Symbol(kPaused)]: false
},
readable: false,
_events: [Object: null prototype] {
_header: 'GET / HTTP/1.1\r\n' +
'host: 127.0.0.1:8000\r\n' +
'accept: application/json\r\n' +
'Connection: close\r\n' +
.
.
.
.
.
. // uzun bir çıktı olduğu için bazı kısımları sildim :)
şeklinde uzunca bir kod çıkacaktır. Burada hangi adrese istek yaptığımız bilgisi, bize geri dönen sonuç, hangi türde bir istek yaptığımız bilgileri vs yer almaktadır :). res kısmında gelen sonuçlar bu kadar. Şimdi ise dostlarım asıl iş yapacağımız kısım yani body kısmını ekranımıza yazdıralım. Bunun için ise ekranımıza gelip
const request = require('request')
const url = "http://127.0.0.1:8000/"
request({
url : url,
json : true
},function (err,res,body){
if (err) throw err
console.log(body) // body bilgisini alacağız
})
şeklinde kodlarımızı yazacağız. Değişen kısım dostlarım sadece console.log() kısmıdır zor bir yanı yok :). Bu kısmı ayarladığımıza göre terminal kısmına gelip
node example.js
komutumuzu yazalım. Ben local alanımda programlama dillerini bir diziye aktarıp bunu json olarak ekrana bastırma işlemini ayarlamıştım. Json a döndürmeden direkt olarak diziiyi bastırmaya kalkıştığımda err kısmı yani hata yakalama kısmı çalışacak ve hatayı ekrana bastıracaktır. Bunun sonucunda ise bize aşağıdaki gibi çıktı verecektir.
Array{
"message": "Array to string conversion",
"exception": "ErrorException",
"file": "C:\\Users\\mfati\\OneDrive\\Masa\u00fcst\u00fc\\request\\routes\\web.php",
"line": 19,
.
.
.
şeklinde ekranımıza bastıracaktır dostlarım. Bu kısımda bize diyor ki "Kardeşim sen bir diziyi string gibi ekrana bastırmaya çalışıyorsun. Bunun uyarısını yapayım aman dikkat et :)" şeklinde bir uyarı veriyor dostlarım. Düzenlemesini ben json a çevirdim şu an ve terminalime gelip tekrardan
node example.js
komutunu yazdığımızda karşımıza çıkacak olan sonuç yani benim programlama dillerinden oluşan dizim aşağıdaki gibi ekrana basılacaktır
[ 'JAVASCRIPT', 'PHP', 'NODE.JS', 'JAVA' ]
şeklinde bir çıktı ekrana basılacaktır. Biz şu an node.js konusunu gördüğümüz için sadece bunun ekrana basılmasını istiyorsak da bu dizinin 3. Elemanı yani 2. Indexini ekrana bastırmamız için kod kısmında gelip
const request = require('request')
const url = "http://127.0.0.1:8000/"
request({
url : url,
json : true
},function (err,res,body){
if (err) throw err
console.log(body[2])
})
şeklinde kodumuzu düzeltip daha sonra terminalimize gelip
node example.js
yazıp enter a basınca ekranımıza çıkacak olan sonuç
NODE.JS
olacaktır. Olay tamamen basit dostlarım sadece pratik yapmak lazım :)
Eveeet artık bu konumuzda da elimden geldiğğince, dilim döndüğünce node.js programlama dilinde request modülünün kullanımından bahsettim. Umarım faydalı olmuşumdur. Eksik veya Hatalı bir anlatım yapmış isem benimle iletişime geçmekten çekinmeyin :). Başlarda biraz karmaşık veya zor gelebilir dostlarım anlıyorum ben de ilk zamanlar zorlanmıştım. Bunun için yapmanız gereken şey her yazımda da dediğim gibi "İstikrarlı ve Azimli Olmak, Bolca Pratik Yapmaktır :)". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır :)
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer