Repository navigation
Python Hook ve Ozel Endpoint
English · Türkçe · Languages / Diller
Kapsam: JSON API Forge 0.5.1 · İnceleme: 17 Eylül 2026 · Dil: Türkçe
Hook, domain mantığını normal Python fonksiyonunda tutar. Üçüncü taraf SDK çağrısı, karmaşık koşullar veya domain algoritmaları için uygundur. Python kodu Forge süreç hesabının yetkileriyle çalışır; yapılandırma yazma yetkisiyle hook yazma yetkisi ayrı tutulmalıdır.
app/WikiDemo/hooks/hello.py:
async def hello(*, request, payload, principal, app, project):
return {"message": "Merhaba", "project": project.slug}app/WikiDemo/config/60-custom.json:
{
"custom_endpoints": [
{
"path": "hello",
"method": "GET",
"public": true,
"handler": "app.WikiDemo.hooks.hello:hello",
"input_mode": "none",
"summary": "Basit genel karşılama",
"response": {"kind": "json"}
}
]
}Public örnek hassas veri döndürmez. Özel endpoint için public yerine uygun permission yazın. Handler import biçimi module:function olmalıdır. Python hook değişikliği JSON hot reload ile yeniden import edilmiş sayılmaz; Python worker restart gerekir.
| Ayar | Seçenekler |
|---|---|
input_mode |
json, form, text, bytes, none
|
parameters[].location |
query, header, cookie, path
|
| Parametre tipleri |
string, integer, number, boolean
|
response.kind |
json, text, html, redirect, stream, file, empty
|
JSON/form payload'ı input_schema ile sınırlandırın. Parameter enum, minimum/maximum, length ve pattern kontrolü desteklenir. Handler'a request/payload/principal/app/project keyword değerleri verilir. Tüm beklenen argümanları veya uygun **kwargs imzasını kabul edin.
summary, description, tags, deprecated, include_in_schema, openapi_extra OpenAPI gösterimini düzenler; erişim politikasını değiştirmez. Public endpointin OpenAPI security dizisi boş olarak işaretlenir.
dependencies listesinde isim, callable: "module:function" ve use_cache tanımlanır. Resource/operation/custom endpoint ilgili dependency adlarına başvurur. Bağımlılığın kullandığı veri bağlantıları ve yetki varsayımlarını da test edin. HTTP cache ile FastAPI dependency cache aynı kavram değildir.
background_hooks yanıt sonrası işleri planlar; context'e result de eklenir. Bunlar kalıcı bir görev kuyruğu değildir. Worker durduğunda tamamlanma ve tekrar teslim garantisi yoktur. Kritik email/iş kaydı için ayrı queue/outbox tasarlayın. Idempotent RPC replay'i background hook'ları ikinci kez planlamaz.
Async handler içinde senkron ağ/disk SDK çağrısını uzun süre bloklamayın. CPU ağırlıklı işleri doğrudan event loop'a yüklemeyin. Dış servis için timeout, bounded cevap, yetkilendirme ve egress kontrolü koyun. Framework'e ait SSRF önlemlerinin her custom Python HTTP çağrınıza kendiliğinden uygulandığını varsaymayın.
Model ayrıntıları: endpoint ve işlem referansı.
Bu sayfa aşağıdaki sabit commitlerdeki davranışı açıklar. Yeni bir sürümde aynı davranışın sürdüğünü varsaymayın.
main/framework/hooks.pymain/framework/factory.pymain/framework/routers/project.pymain/framework/responses.py