Yapay Zeka Ajanları
n8n Öğrenme Yolu
BÖLÜM 06Orta ~90 dk

HTTP Request, API ve Webhook

n8n'in dışa açılan en önemli iki kapısı: HTTP Request ile herhangi bir API'ye konuşmak, Webhook ile dışarıdan gelen olayları yakalamak.

Bu bölümde

HTTP Request ve Webhook, n8n'in dış dünyaya açıldığı iki ana kapıdır: biri konuşmaya gider (siz API'yi çağırırsınız), diğeri gelen olayları yakalar (dışarısı sizi tetikler). Bu bölümde her ikisinin de tüm detaylarını — kimlik doğrulama çeşitlerini, response handling'i, sayfalama ve hata yönetimini, webhook güvenliğini — gerçek örneklerle öğreneceksiniz.

Konular

  • HTTP Request node: GET, POST, PUT, DELETE
  • Authentication: API Key, Bearer, OAuth2
  • Request body: JSON, form-data, query params
  • Response handling, pagination
  • Webhook trigger: URL üretimi, secret, GET/POST
  • Webhook response: senkron vs asenkron
  • Test vs Production webhook URL farkları

HTTP Request: GET, POST, PUT, DELETE

HTTP Request node herhangi bir REST API'ye konuşmanızı sağlar. Method seçimi yaptığınız şeye bağlıdır: veri okuma → GET, yeni kayıt → POST, mevcut kaydı güncelleme → PUT/PATCH, silme → DELETE. URL'de expression kullanabilirsiniz ({{ $json.id }} ile dinamik id gönderme). Query Parameters, Headers ve Body sekmeleri ayrı ayrı yönetilir; özellikle Content-Type header'ı (application/json mı, form-data mı) doğru ayarlanmazsa API 415 hatası döner.

Manual Trigger
{ }HTTP Request (GET)
Set
{ }HTTP Request (POST)

Authentication: API Key, Bearer, OAuth2

API'ler kendinizi kanıtlamanızı ister. En sık karşılaştığınız üç yöntem: (1) API Key (Header Auth) — anahtarı sabit bir header'a koyar (örn. X-API-Key), kurulumu en basit; (2) Bearer Token — 'Authorization: Bearer <token>' formatında, çoğu modern API böyle; (3) OAuth2 — kullanıcı adına yetki almak gerektiğinde (Google, Slack, Gmail). OAuth2'yi n8n Credentials ekranından bir kez kurarsanız token yenileme otomatik halledilir. Anahtarları asla URL veya body'de açıkta tutmayın — her zaman Credentials kullanın.

Request body: JSON, form-data, query params

Body formatı API'nin beklediği şekilde olmalı. JSON modunda 'Specify Body' = JSON seçip parametre objesi yazarsınız — en yaygın. Form-Encoded (application/x-www-form-urlencoded) eski API'ler için, form-data ise dosya yüklerken (binary). Query params küçük filtreler için pratiktir (?status=active&limit=50) ama uzun listeler ya da hassas veriler body'de gönderilmelidir.

Response handling ve pagination

API yanıtı her zaman beklediğiniz gibi gelmez. Response status code 200 değilse n8n hata fırlatır — 'Continue On Fail' ile akışın durmamasını sağlayıp 'On Error' branch'inde işleyebilirsiniz. Status 429 (rate limit) görürseniz Wait + retry pattern'i uygulayın. Pagination için HTTP Request'in 'Pagination' tab'ı kritik: cursor-based ya da page-number tabanlı stratejiyi seçin ve 'Max Pages' ile sonsuz döngüyü engelleyin.

Webhook trigger: URL, secret, GET/POST

Webhook node bir endpoint URL üretir (örn. https://n8n.example.com/webhook/abc123). Bu URL'yi dış servise (Stripe, GitHub, Typeform, kendi backend'iniz) verirsiniz; o servis bir olay olduğunda buraya POST atar. HTTP Method (GET/POST), Path (/webhook-name) ve Authentication (None / Basic / Header / JWT) ayarlarını yapılandırırsınız. En kritik: Webhook URL'inizi public yapmadan önce mutlaka bir auth katmanı ekleyin — herhangi biri spam atabilir.

Webhook (POST, JWT auth)
IF
{ }HTTP Request
Respond

Test vs Production webhook URL'leri

Webhook node'un üzerinde iki URL gösterir: 'Test URL' (editor'da 'Execute Workflow' bekliyorken aktif, kısa süreli) ve 'Production URL' (workflow Active olduğunda kalıcı aktif). Geliştirme sırasında Test URL'yi kullanın; canlıya alırken Production URL'ye geçin ve dış servisteki webhook config'i güncelleyin. En sık yapılan hata: Test URL ile geliştirip aynı URL'yi production'a koymak — sonra çalışmadığını fark etmek.

Webhook response: senkron vs asenkron

Webhook'un nasıl yanıt vereceği 'Respond' parametresinden belirlenir. 'Immediately' modu olay alındığı anda 200 OK döner, akış arka planda çalışır — webhook gönderenin beklemesini istemiyorsanız (Stripe, GitHub) idealdir. 'When Last Node Finishes' tüm akış bitene kadar bekler, son node'un çıktısını döner — sizden veri bekleyen entegrasyonlar için. 'Using Respond to Webhook Node' ise akışta istediğiniz noktada özelleştirilmiş yanıt dönmenizi sağlar — chatbot/form gibi senkron senaryolar için en esnek olanı.

Bu bölümün workflow'u (n8n editör görünümü)

Webhook
{ }HTTP Request
IF
Respond to Webhook
WhatsApp'tan Danış