Başlangıç
Gereksinimler
- Node.js 18+ — Kütüphane, Node.js Native Fetch API üzerine inşa edilmiştir. Polyfill gerekmez.
- TypeScript 4.7+ — Generic'lerle tam tip güvenliği için önerilir. Kütüphane kendi
.d.tstanımlarıyla birlikte gelir.
Kurulum
sh
npm install @yildizpay/http-adaptersh
yarn add @yildizpay/http-adaptersh
pnpm add @yildizpay/http-adapterHızlı Başlangıç
Adapter oluşturun, istek inşa edin, gönderin:
typescript
import { HttpAdapter, RequestBuilder, HttpMethod } from '@yildizpay/http-adapter';
// 1. Adapter'ı oluştur
const adapter = HttpAdapter.builder().build();
// 2. İsteği inşa et
const request = new RequestBuilder('https://jsonplaceholder.typicode.com')
.setEndpoint('/users/1')
.setMethod(HttpMethod.GET)
.build();
// 3. Gönder ve tipli yanıtı al
interface Kullanici {
id: number;
name: string;
email: string;
}
const response = await adapter.send<Kullanici>(request);
console.log(response.data.name); // "Leanne Graham"Gerçekçi Kurulum
Üretimde genellikle interceptor'lar, retry politikası ve circuit breaker eklersiniz:
typescript
import {
HttpAdapter,
RetryPolicies,
CircuitBreaker,
} from '@yildizpay/http-adapter';
export const apiAdapter = HttpAdapter.builder()
.withInterceptor(new AuthInterceptor(), new LoggingInterceptor())
.withRetryPolicy(RetryPolicies.exponential(3))
.withCircuitBreaker({
failureThreshold: 5,
resetTimeoutMs: 30_000,
successThreshold: 1,
})
.withCorrelationId()
.build();Adapter'ı bir kez oluşturun (örneğin bir servis modülünde singleton olarak) ve istekler arasında yeniden kullanın. Adapter örnekleri, bireysel istekler açısından durumsuz (stateless) tasarlanmıştır.
Builder API ve create() Karşılaştırması
HttpAdapter oluşturmanın iki yolu vardır:
typescript
// Builder API — önerilir, okunabilir ve keşfedilebilir
const adapter = HttpAdapter.builder()
.withRetryPolicy(RetryPolicies.exponential(3))
.build();
// Factory fonksiyonu — tüm seçenekler bir config nesnesinden geldiğinde kullanışlı
const adapter = HttpAdapter.create(
[new AuthInterceptor()],
RetryPolicies.exponential(3),
undefined, // opsiyonel özel HTTP istemcisi
new CircuitBreaker({ failureThreshold: 5, resetTimeoutMs: 60_000 }),
);Builder API'yi tercih edin — daha açık ve genişletmesi kolaydır.
Sıradaki Adımlar
- Request Builder — İstekleri oluşturmanın tüm yolları
- Interceptor'lar — Auth, loglama ve veri dönüşümü hook'ları
- Hata Yönetimi — Her hata senaryosu için tipli exception'lar
- Dayanıklılık — Retry politikaları ve Circuit Breaker
