Framework bağdaştırıcıları
GuildGate'in HTTP bağdaştırıcıları framework isteğini RequestEnvelope biçimine dönüştürür, action sonucunu HTTP durumuna çevirir ve oturum metadata'sını yanıta uygular.
Fastify
import { fastifyActionHandler } from "@kavtuai/guildgate/fastify";
app.patch(
"/api/guilds/:guildId/settings",
fastifyActionHandler(gate, updateSettings, {
input: (request) => ({
...(request.body as object),
guildId: (request.params as { guildId: string }).guildId,
}),
}),
);
Express
import { expressActionHandler } from "@kavtuai/guildgate/express";
app.patch(
"/api/guilds/:guildId/settings",
expressActionHandler(gate, updateSettings, {
input: (request) => ({
...request.body,
guildId: request.params.guildId,
}),
}),
);
Hono
import { honoActionHandler } from "@kavtuai/guildgate/hono";
app.patch(
"/api/guilds/:guildId/settings",
honoActionHandler(gate, updateSettings, {
input: async (context) => ({
...(await context.req.json()),
guildId: context.req.param("guildId"),
}),
}),
);
Proxy ve IP bilgisi
Bağdaştırıcıya güvenilir istemci IP'si sağlamak uygulamanın proxy politikasına bağlıdır. Her X-Forwarded-For değerine doğrudan güvenme. Cloudflare, Nginx veya load balancer katmanında hangi proxy'nin güvenilir olduğunu açıkça yapılandır.
Origin ve cookie
Bağdaştırıcı şu metadata alanlarını işlemelidir:
replacementSessionTokenreplacementCsrfTokenclearSessionCookie
1.1.0, süresi dolmuş veya iptal edilmiş oturumda Fastify, Express ve Hono yanıtlarına cookie temizleme bilgisini taşır. Custom adapter yazıyorsan aynı davranışı koru.
Input birleştirme
Route parametresi, query ve body alanlarını birleştirirken önceliği açıkça belirle. Güvenlik açısından önemli kimliği body'nin route parametresini ezmesine izin verme.
input: (request) => ({
...request.body,
guildId: request.params.guildId,
})
Burada guildId en son yazıldığı için body değeri route kimliğini değiştiremez.
Hata yanıtı
İstemciye ActionExecutionResult.error içindeki kararlı kodu ve yerelleştirilmiş mesajı gönder. Stack trace, SQL metni, Discord token'ı veya dahili exception nesnesini yanıta ekleme. requestId değerini log ve destek kaydı için koru.
Custom adapter kontrolü
Yeni framework bağdaştırıcısında şunları test et:
- method ve path doğru aktarılıyor
- origin/cookie/header çoklu değerleri daraltılıyor
- abort sinyali bağlantı kapanmasına bağlanıyor
- replacement ve clear cookie metadata'sı uygulanıyor
- hata durum kodu iki kez yazılmıyor
- response tamamlandıktan sonra domain action tekrar çağrılmıyor