Node.js 18 ve sonrasında yerleşik fetch geldiği için sertifika API istemcisi için ek kütüphane şart değildir. Küçük bir sınıf ile kimlik, zaman aşımı ve hata işleme tek yerde toplanabilir.
Basit istemci
// sslclient.mjs
export class SslApiClient {
constructor(baseUrl, token) {
this.baseUrl = baseUrl;
this.token = token;
}
async istek(yol, { method = 'GET', body } = {}) {
const res = await fetch(`${this.baseUrl}${yol}`, {
method,
headers: {
'Authorization': `Bearer ${this.token}`,
'Content-Type': 'application/json',
},
body: body ? JSON.stringify(body) : undefined,
signal: AbortSignal.timeout(30000),
});
if (!res.ok) {
throw new Error(`API hatasi ${res.status}`);
}
return res.json();
}
siparisler() { return this.istek('/orders'); }
durum(id) { return this.istek(`/orders/${id}`); }
}
Kullanım:
import { SslApiClient } from './sslclient.mjs';
const c = new SslApiClient('https://api.ornek-ca.example/v1', process.env.SSL_API_TOKEN);
console.log(await c.siparisler());
Dikkat edilecekler
- Token'ı
process.envüzerinden okuyun;.envdosyasını sürüm kontrolüne eklemeyin. NODE_TLS_REJECT_UNAUTHORIZED=0ayarını asla üretimde kullanmayın; TLS doğrulamasını kapatır.- 429 yanıtında
Retry-Afterbaşlığına saygı gösterin. - Sertifika gibi hassas veri içeren gövdeleri günlüğe yazmayın.
Sertifika bitişi izleme
Node'un tls modülü ile bir sunucuya bağlanıp getPeerCertificate() çıktısındaki valid_to alanını okuyarak API'den bağımsız bir bitiş kontrolü yazabilirsiniz. Bunu zamanlanmış bir görevle çalıştırıp uyarı üretmek iyi bir ikinci güvenlik ağıdır.
Elle hızlı kontrol için SSL denetleyiciyi, ürünler için SSL sertifikaları sayfasını kullanabilirsiniz.
Yaygın sorunlar
- Eski Node sürümlerinde
fetchyoktur; Node 18 veya üzerini kullanın. - Yanıt JSON değilse
res.json()hata verir; önceres.text()ile bakın. - Zaman aşımı koymazsanız askıda kalan istekler işlemi sonsuza kadar bekletebilir.