Yükleniyor...

HttpClient Referansı

Angular'da HttpClient Referansı, modern web uygulamaları ve SPA (Single Page Application) projelerinde veri alışverişini yönetmek için kritik bir araçtır. HttpClient, HTTP isteklerini (GET, POST, PUT, DELETE) kolay ve etkili bir şekilde gerçekleştirmeyi sağlar ve RxJS ile entegre çalışarak reaktif veri akışlarını yönetir. Bu, uygulamanın performansını artırır, veri akışını düzenler ve komponentler arasında veri paylaşımını kolaylaştırır.
HttpClient, Angular bileşenleri ve servisleriyle birlikte kullanıldığında veri akışını merkezi olarak yönetmek, bileşen yaşam döngüsüne uyum sağlamak ve uygulama durumunu doğru bir şekilde kontrol etmek mümkün olur. Bu referans, prop drilling, gereksiz yeniden render işlemleri ve durum mutasyonları gibi yaygın hatalardan kaçınmaya yardımcı olacak stratejileri de içerir.
Bu kaynak, geliştiricilere HttpClient kullanımını pratik örneklerle öğretirken; veri akışı yönetimi, lifecycle entegrasyonu, hata yönetimi ve performans optimizasyonu gibi ileri düzey konuları kapsar. Okuyucu, Angular uygulamalarında yeniden kullanılabilir ve sürdürülebilir servisler ve bileşenler oluşturmayı öğrenecek ve HttpClient ile veri yönetiminde en iyi uygulamaları kavrayacaktır.

Temel Örnek

typescript
TYPESCRIPT Code
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

interface User {
id: number;
name: string;
email: string;
}

@Component({
selector: 'app-user-list',
template: `     <h2>Kullanıcı Listesi</h2>     <ul>       <li *ngFor="let user of users$ | async">{{ user.name }} - {{ user.email }}</li>     </ul>
`
})
export class UserListComponent implements OnInit {
users$: Observable<User[]>;

constructor(private http: HttpClient) {}

ngOnInit(): void {
this.users$ = this.http.get<User[]>('[https://jsonplaceholder.typicode.com/users](https://jsonplaceholder.typicode.com/users)');
}
}

Bu örnek, Angular'da HttpClient kullanımını temel düzeyde göstermektedir. UserListComponent bileşeni, dış bir API’den kullanıcı verilerini almak için HttpClient’i kullanır. User arayüzü, tip güvenliğini garanti eder ve users$ Observable tipinde tanımlanmıştır; bu sayede reaktif veri yönetimi sağlanır.
HttpClient servisi, constructor ile enjeksiyon yoluyla bileşene dahil edilmiştir. ngOnInit yaşam döngüsü metodu, bileşen yüklendiğinde verinin çekilmesini sağlar. Async pipe, template içerisinde observable’ın otomatik olarak abone olmasını ve aboneliğin iptal edilmesini yönetir. Bu yapı, gereksiz yeniden render işlemlerini engeller ve prop drilling sorununu ortadan kaldırır. Bu yaklaşım, gerçek dünya Angular projelerinde HttpClient kullanımına uygun, ölçeklenebilir ve yeniden kullanılabilir bir örnektir.

Pratik Örnek

typescript
TYPESCRIPT Code
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { catchError } from 'rxjs/operators';
import { Observable, of } from 'rxjs';

interface Post {
id: number;
title: string;
body: string;
}

@Component({
selector: 'app-post-list',
template: `     <h2>Post Listesi</h2>     <ul>       <li *ngFor="let post of posts$ | async">{{ post.title }}</li>     </ul>     <div *ngIf="errorMessage" class="error">{{ errorMessage }}</div>
`
})
export class PostListComponent implements OnInit {
posts$: Observable<Post[]>;
errorMessage: string = '';

constructor(private http: HttpClient) {}

ngOnInit(): void {
this.posts$ = this.http.get<Post[]>('[https://jsonplaceholder.typicode.com/posts](https://jsonplaceholder.typicode.com/posts)')
.pipe(
catchError(error => {
this.errorMessage = 'Veriler yüklenirken hata oluştu';
return of([]);
})
);
}
}

Advanced Angular Implementation

typescript
TYPESCRIPT Code
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, retry } from 'rxjs/operators';

export interface Todo {
id: number;
title: string;
completed: boolean;
}

@Injectable({
providedIn: 'root'
})
export class TodoService {
private apiURL = '[https://jsonplaceholder.typicode.com/todos](https://jsonplaceholder.typicode.com/todos)';
private headers = new HttpHeaders({ 'Content-Type': 'application/json' });

constructor(private http: HttpClient) {}

getTodos(): Observable<Todo[]> {
return this.http.get<Todo[]>(this.apiURL)
.pipe(
retry(2),
catchError(this.handleError)
);
}

addTodo(todo: Todo): Observable<Todo> {
return this.http.post<Todo>(this.apiURL, todo, { headers: this.headers })
.pipe(catchError(this.handleError));
}

private handleError(error: HttpErrorResponse) {
console.error('HTTP Hatası:', error);
return throwError(() => new Error('Sunucu hatası, lütfen tekrar deneyin.'));
}
}

HttpClient kullanırken Angular için en iyi uygulamalar, durumu doğru şekilde yönetmek, prop drilling’den kaçınmak, async pipe ve observables ile veri akışını reaktif olarak kontrol etmektir. Doğrudan durum mutasyonu, kontrolsüz abonelikler ve hata yönetimi eksikliği, yaygın hatalar arasında yer alır.
Hata yönetimi için catchError, retry gibi RxJS operatörleri kullanılmalı ve servisler üzerinden enjeksiyon sağlanmalıdır. Performans optimizasyonu için HTTP isteklerinin cache edilmesi, gereksiz tekrarların önlenmesi ve async pipe kullanımı önemlidir. Güvenlik açısından ise header yapılandırması ve kimlik doğrulama dikkatle uygulanmalıdır. Bu yaklaşım, SPA projelerinde ölçeklenebilir ve yüksek performanslı uygulamalar geliştirmeyi sağlar.

📊 Kapsamlı Referans

HttpClient HTTP istekleri yapar http.get/post/put/delete() this.http.get<User[]>('url') GET, POST, PUT, DELETE yöntemlerini destekler ve Observable döner
get Veri alır http.get<T>(url) this.http.get<User[]>('url') async pipe ve tip güvenliği ile entegre
post Veri gönderir http.post<T>(url, body) this.http.post<User>('url', user) JSON gönderimi ve header yapılandırması
put Veri günceller http.put<T>(url, body) this.http.put<User>('url', user) Kaynakları günceller
delete Veri siler http.delete<T>(url) this.http.delete<User>('url') Tip güvenliği ile silme
request Genel istek http.request(method, url, options) this.http.request('GET', 'url') Esnek kullanım
headers Header ayarları new HttpHeaders({'Content-Type':'application/json'}) const headers = new HttpHeaders({'Authorization':'token'}) Özel header gönderimi
params URL parametreleri new HttpParams().set('key','value') this.http.get('url',{params}) Query parametre ekleme
observe Yanıt tipi observe:'body' 'response' 'events'
responseType Yanıt veri tipi json, text, blob this.http.get('url',{responseType:'text'}) Metin veya binary veri okuma
withCredentials Cookie gönderimi true/false this.http.get('url',{withCredentials:true}) Kimlik doğrulama yönetimi
retry Tekrar sayısı retry(n) this.http.get('url').pipe(retry(2)) Hatalarda yeniden deneme
catchError Hata yönetimi catchError(err => of([])) this.http.get('url').pipe(catchError(err => of([]))) HTTP hata kontrolü
pipe RxJS zinciri observable.pipe(operator) this.http.get('url').pipe(map()) Operatör zincirleme
unsubscribe Abonelik iptali subscription.unsubscribe() this.sub.unsubscribe() Memory leak önleme

📊 Complete Angular Properties Reference

Property Values Default Description Angular Support
observe 'body','response','events' 'body' HTTP yanıtından dönecek veri tipi 8+
responseType 'json','text','blob','arraybuffer' 'json' Yanıt veri tipi 8+
headers HttpHeaders Özel HTTP header’ları 8+
params HttpParams URL parametreleri 8+
withCredentials boolean false Cookie ve kimlik doğrulama 8+
reportProgress boolean false İstek ilerlemesini raporlama 8+
observeEvents boolean false Tam HTTP olaylarını gözlemleme 8+
retry number 0 Hatalarda tekrar sayısı 8+
catchError function Hata yönetimi fonksiyonu 8+
pipe function RxJS operatör zinciri 8+
unsubscribe function Observable aboneliğini iptal etme 8+

HttpClient Referansı ile Angular’da veri yönetimi, reaktif programlama ve SPA performansı konularında önemli kazanımlar elde edilir. Bileşenler ve servisler ile entegre edilmiş HttpClient kullanımı, yeniden kullanılabilir ve ölçeklenebilir yapılar oluşturmayı sağlar.
Sonraki adımlar olarak RxJS ileri seviye, NgRx ile durum yönetimi, lifecycle hook optimizasyonları ve performans iyileştirme teknikleri üzerinde çalışılabilir. Gerçek projeler üzerinde uygulama yaparak, HttpClient kullanımı profesyonel düzeye taşınabilir ve Angular uygulamaları için güvenli, yüksek performanslı ve sürdürülebilir çözümler geliştirilebilir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek