Responser¶
Olay tabanlı akışların kapatıcısıdır. trexMes panele HTTP cevabını döndürür. Her event akışının sonunda mutlaka bulunmalıdır (bazı node'lar bunu otomatik yönetir).
Özet¶
Akış sonlandırıcı
Business Events, System Events gibi olay node'larıyla başlayan akışlar mutlaka bir Responser ile sonlanmalıdır. Aksi takdirde panel cevap bekler, akış asılı kalır ve timeout hatası alırsınız.
Ne Zaman Kullanılır?¶
- Her olay (event) tabanlı akışın sonunda
- Custom form / control / method invocation operasyonlarından sonra cevap döndürmek için
Hangi Akışlarda Gerekli DEĞİLDİR?¶
trex Subscriberkendi cevabını yönetir — sonunaResponserkoymayın.Method Returnsasenkron bir akış başlatır — gerekli olmayabilir.
Property Tablosu¶
| Alan | Tip | Varsayılan | Açıklama |
|---|---|---|---|
name |
string | — | Node-RED canvas üzerinde gösterilecek ad |
statusCode |
string | (boş) | HTTP cevap kodunu zorla ayarlamak için (örn. 200, 400) |
headers |
object | {} |
HTTP cevap header'ları |
Davranış¶
Responser aldığı msg'i analiz eder ve panele şu şekilde cevap döner:
// Statü kodu belirleme (öncelik sırası)
statusCode = node.statusCode || msg.statusCode || 200;
// Payload tip kontrolü
if (typeof msg.payload === "object" && !Buffer.isBuffer(msg.payload)) {
msg.res._res.status(statusCode).jsonp(msg.payload);
} else {
msg.res._res.status(statusCode).send(msg.payload);
}
Cookie ve Header Yönetimi¶
msg.headers ve msg.cookies set edilmişse otomatik olarak HTTP cevabına eklenir:
Tipik Akış¶
flowchart LR
A[Business Events] --> B[Custom Form]
B --> C[Form Bind Controls]
C --> D[Responser]
style A fill:#ccffcc,color:#000
style B fill:#ccffcc,color:#000
style C fill:#ccffcc,color:#000
style D fill:#ccffcc,color:#000
Çıkış Yok¶
Responser outputs: 0 olduğu için sonrasına başka node bağlayamazsınız. Akış burada sona erer.
Sık Karşılaşılan Hatalar¶
Panel cevap beklemede asılı kalıyor
Akışta Responser eksik. Olay node'undan başlayan akışın sonuna bir Responser eklenmelidir. Birden fazla dal tek bir Responser'a bağlanabilir.
Cevap iki kere dönüyor uyarısı
Aynı msg.res üzerinden iki kere cevap döndürülmeye çalışıldığında ortaya çıkar. Birden fazla Responser aynı dalda peş peşe gelmemelidir.
Hata: msg.res is undefined
Bu node'a msg.res taşımayan bir akıştan geliyorsanız (örn. inject ile manuel başlatılan flow) cevap dönecek bir HTTP isteği yoktur. Sadece gerçek olay akışlarında çalışır.
İpuçları¶
Hata cevabı dönmek istiyorum
Akışın bir noktasında hata oluştu ve panele 400 veya 500 döndürmek istiyorsanız:
// Function node içinde
msg.statusCode = 400;
msg.payload = { error: "Invalid order number" };
return msg;
Sonra Responser bunu otomatik kullanır.
JSON yerine düz metin
msg.payload bir string ise düz metin gönderilir. object ise JSON olarak gönderilir.
İlgili Nodlar¶
- trex Subscriber — Kendi cevabını yönetir
- Olay Nodları — Tüm olay node'ları
Responserile sonlandırılır