Ana içeriğe geç

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.

Bağdaştırıcı şu metadata alanlarını işlemelidir:

  • replacementSessionToken
  • replacementCsrfToken
  • clearSessionCookie

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