Skip to content

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.ts tanımlarıyla birlikte gelir.

Kurulum

sh
npm install @yildizpay/http-adapter
sh
yarn add @yildizpay/http-adapter
sh
pnpm add @yildizpay/http-adapter

Hı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

Released under the MIT License.