Akıcı Request Builder
Sezgisel, zincirleme bir API ile karmaşık HTTP istekleri oluşturun. Eşzamanlı ortamlarda yan etkileri önlemek için değiştirilemez (immutable) tasarım.
Sıfır bağımlılık. Tam tip güvenliği. Native Fetch API üzerine inşa edilmiş savaşta sınanmış dayanıklılık desenleri.

import { HttpAdapter, RetryPolicies } from '@yildizpay/http-adapter';
const adapter = HttpAdapter.builder()
.withInterceptor(new AuthInterceptor(), new LoggingInterceptor())
.withRetryPolicy(RetryPolicies.exponential(3))
.withCircuitBreaker({ failureThreshold: 5, resetTimeoutMs: 30_000 })
.withCorrelationId()
.build();import { RequestBuilder, HttpMethod } from '@yildizpay/http-adapter';
const request = new RequestBuilder('https://api.odeme.com')
.setEndpoint('/v1/odeme')
.setMethod(HttpMethod.POST)
.setBody({ tutar: 1000, para_birimi: 'TRY' })
.build();import {
TooManyRequestsException,
CircuitBreakerOpenException,
NetworkException,
} from '@yildizpay/http-adapter';
try {
const response = await adapter.send<OdemeYaniti>(request);
console.log('Ödeme ID:', response.data.id);
} catch (error) {
if (error instanceof TooManyRequestsException) {
console.warn(`İstek limiti aşıldı. ${error.getRetryAfterMs()}ms sonra tekrar deneyin`);
} else if (error instanceof CircuitBreakerOpenException) {
console.error('Ödeme servisi kullanılamıyor. Hızlı başarısız oluyor.');
} else if (error instanceof NetworkException) {
console.error('Ağ hatası:', error.toJSON());
}
}import { MockHttpAdapter } from '@yildizpay/http-adapter/testing';
const adapter = new MockHttpAdapter();
adapter
.onEndpoint('/v1/odeme')
.mockResolvedValue({ id: 'odeme_123', durum: 'basarili' });
await odemeServisi.isle(siparis);
adapter.assertCalledWith('/v1/odeme', { method: HttpMethod.POST });
adapter.assertCalledTimes(1);Yalnızca fetch'i sarmakla kalmaz — üretim Node.js uygulamalarında servisler arası iletişimin gerçek zorluklarına karşı inşa edilmiştir.
| Ham Fetch | axios | @yildizpay/http-adapter | |
|---|---|---|---|
| HTTP durum koduna özel typed exception | — | — | ✅ |
| Yerleşik Circuit Breaker | — | — | ✅ |
| İstek bazlı retry/circuit geçersiz kılma | — | — | ✅ |
| Yanıt doğrulama hook'ları | — | — | ✅ |
Hatalarda isRetryable() sinyali | — | — | ✅ |
Tüm hatalarda yapılandırılmış toJSON() | — | — | ✅ |
| Birinci sınıf test araçları | — | — | ✅ |
| Sıfır üretim bağımlılığı | ✅ | — | ✅ |
| Node.js Native Fetch üzerinde çalışır | ✅ | — | ✅ |