Bloğa geri dön

Angular Interceptor'ları ile HTTP İsteklerini Yönetme ve Hata İşleme

Angular Interceptor'ları ile HTTP İsteklerini Yönetme ve Hata İşleme

Eğer bir uygulama geliştiriyorsanız, kullandığınız AngularJS, muhtemelen HTTP interceptor'lardan (kesicilerden) haberdarsınızdır. Ancak bu HTTP interceptor'lar Angular 4.3 sürümüne kadar mevcut değildi. Bu eğitimde, HTTP isteklerini ve yanıtlarını yönetmek ve hataları işlemek için Angular'da interceptor'ları kullanacağız.

Gereksinimler

Angular uygulamaları Node.js çalışma zamanını kullanır. Bu eğitimi tamamlamak için makinenizde Node.js'in kurulu olması gerekir. Neyse ki Node.js'i kurmak oldukça kolaydır. Şurada eksiksiz bir kılavuzumuz var: Ubuntu 18.04 üzerinde Node.js Nasıl Kurulur.

Ayrıca, Angular bilmeniz ve Angular uygulamaları oluşturmak için Angular CLI kullanmaya aşina olmanız sizin için faydalı olacaktır. Node v8.12.0 ve npm v6.4.1 kullanacağız.

Adım 1: Angular Uygulaması Oluşturun

Başlamak için, Angular CLI kullanarak yeni bir Angular uygulaması oluşturalım. Uygulamamıza Angular-Interceptor adını vereceğiz. Uygulamayı oluşturmak için aşağıdaki komutu çalıştırın:

Size bazı seçenekler sunulacaktır. Varsayılan değerleri girin ve devam edin:

ang cli Angular Interceptors

Ardından, uygulama dizinine gidin ve uygulamayı başlatmak için aşağıdaki komutu çalıştırın:

ng serve Angular Interceptors

Ardından, uygulamayı görmek için tarayıcınızda http://localhost:4200 adresini görüntüleyin. Artık temel bir Angular uygulaması yapılandırdınız.

Adım 2: Angular Uygulamasını Stilize Edin

Burada Angular uygulamamızı Angular Material kullanarak stilize edeceğiz. Projenize Angular Material kurmak için aşağıdaki komutu çalıştırın:

Bu işlem projenize @angular/material, @angular/cdk, ve @angular/animation kuracaktır. Ardından, projede bir animasyon ayarlayacağız. BrowserAnimationsModule modülünü src/app/module.ts dosyanıza ekleyin:

Angular Material'dan Dialog bileşenini kullanacağız. Dialog bileşenini kullanmak için, MatDialogModule modülünü src/app/app.module.ts dosyasında içe aktarmamız gerekir:

Arayüzü daha çekici hale getirmek için, indigo-pink.css dosyasını styles.scss dosyanıza ekleyelim:

Adım 3: Angular Interceptor'ınızı Oluşturun

Under the app klasörünün altında, interceptor adında yeni bir klasör oluşturacağız. Bu yeni oluşturulan klasörün içinde, yeni bir httpconfig.interceptor.ts dosyası oluşturun.

Interceptor'ımızın çalışması için httpconfig.interceptor.ts dosyamızda bazı bağımlılıkları içe aktarmamız gerekiyor. Bu bağımlılıklar şunlardır: HttpInterceptor, HttpRequest, HttpResponse, ve HttpHandler, HttpEvent, HttpErrorResponse.

Our httpconfig.interceptor.ts dosyamız içe aktarmadan sonra aşağıdaki gibi görünecektir:

Ardından, bir HttpConfigInterceptor sınıfı oluşturun ve HttpInterceptor. Bu bir örnektir:

Aşağıdaki kodu httpconfig.interceptor.ts dosyasına ekleyin:

Çalışması için, httpconfig.interceptor.ts dosyasını app.module.ts dosyamıza import etmeliyiz:

Add HttpConfigInterceptor sınıfını providers dizisine ekleyin. multi: true değerini, birden fazla interceptor'ı işlemek için ayarlayacağız:

Bir sonraki bölümde, hataları ele almak için servisimizi oluşturacağız.

Adım 4: Hataları Ele Almak için Servis

Burada hataları ele almak için kod yazacağız. Hataları yakalamamız ve son kullanıcılara uygun şekilde göstermemiz gerekecek. Özetle, takip edeceğimiz adımlar aşağıdadır:

  1. Şu adla bir klasör oluşturun: error-dialog (konum: app klasörü).
  2. Şu isimde bir hata servisi oluşturun: errorDialogService, şu isimli dosya içinde: errordialog.service.ts.
  3. Aşağıdaki kodu şu dosyaya ekleyin: errordialog.service.ts :
Bundan sonra, şu adla yeni bir dosya oluşturun: errordialog.component.ts. Bu dosyanın içine aşağıdaki kodu ekleyin:
Son olarak, şablon için bir HTML dosyası oluşturmamız gerekiyor: errordialog.component.html, şablon için:
Bazı değişiklikler için şu dosyayı tekrar incelememiz gerekiyor: httpconfig.interceptor.ts dosyası. Bu değişiklikler hataları yakalamamızı sağlayacaktır.

Özetlemek gerekirse, aşağıdaki adımları listeleyelim:

  1. Şunu içe aktararak (import) başlayın: errordialog.service.
  2. Ardından, şunun için yapıcı metodu (constructor) ekleyeceğiz: errorDialogService.
  3. Ayrıca, hata yanıtını işlemek için şu yöntemleri kullanan kodu ekleyeceğiz: catchError ve throwError.
  4. Şunları içe aktarın (import): errordialog.service ve errordialog.component şunun içine: AppModule.

Değişiklikleri yaptıktan sonra iki dosya değiştirilmiş olacak: app.module.ts ve httpconfig.interceptor.ts:

Adım 5: Örnek Servislerin Oluşturulması

Bu adımda örnek olarak iki servis oluşturacağız:

  1. Giriş API'si
  2. Müşteri Detay API'si

Şu adla yeni bir klasör oluşturun: services şunun içinde: src klasörü. Ardından, yeni oluşturulan bu klasörün içinde şu adla yeni bir dosya oluşturun: login.service.ts, ve iki fonksiyon ekleyin:

Adım 6: HTTP İstemci Servisini Çağırma

Son olarak, eğitimimizin son bölümündeyiz. HTTP servisimizi şuradan çağıracağız: app.component.ts dosyası. İki LoginService fonksiyonunu şuraya ekleyin: app.component.ts. Giriş API'sini onload ile ve customers/details API'sini ise şununla çağırın: onclick:

Şimdi şunun içine bir UI öğesi eklemeliyiz: app.component.html, böylece kullanıcı buna tıklayabilir:

Bitirmek için, şunları dahil etmeniz gerekecek: LoginService şuraya: providers şunun içindeki: AppModule:

Aşağıda, hata işleyici iletişim kutusunun bir ekran görüntüsünü bulabilirsiniz:

error

Sonuç

Bu eğitimde, Angular interceptor'larını kullanarak HTTP isteklerini ve yanıtlarını nasıl yöneteceğimizi öğrendik. Ayrıca Angular Material'daki iletişim kutusunu (dialog) kullanarak hataları nasıl ele alacağımızı da öğrendik.

Angular uygulamaları çalışma zamanı olarak Node.js kullanır. Node.js hakkında daha fazla bilgi edinmek ve Node.js uygulamalarını Docker üzerinde nasıl dağıtacağınızı öğrenmek istiyorsanız, Ubuntu 20.04 üzerinde Docker ile Node.js (Express.js) Uygulaması Nasıl Dağıtılır kılavuzumuza göz atın. Ayrıca Node.js ile Ubuntu 20.04 Üzerinde Üretim Görevleri Nasıl Gerçekleştirilir ve CentOS 8'e Node.js Kurulumu: Tam Bir Kılavuz.

Keyifli Kodlamalar!

author

Pranay Kapgate

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.