digiRunner Composer node-red

Composer 如何處理需要 redirect 的 API

顏綸 Lun Yan 2025/03/21 19:14:03
18

前言

上次分享了 http request 節點的基本使用方式,這次要再來分享打需要重新導向 API 所產生的一些情境,

不廢話,我們直接看下去!

 

 

一、流程

下圖是一個簡單的 redirect 範例,其中打 /hoholive/coco/redirect 會導向 /hoholive/coco/redirect2,

而 /hoholive/coco/redirect2 會再導向 /hoholive/coco/redirect3。

至於怎麼製作出以上多個 API 流程可以參考這篇:subpath 的使用方式

 

在跑流程前,我們先設定各個節點:

1. request API 的 http request 節點:該 URL 就是會 redirect 的 API

 

2. 兩個 set headers & status code 的 function 節點 code 如下:分別設定其要導向的 API 和給予 302 的 HTTP 狀態碼

 

3. End redirect 的 function 節點設定了回傳的 body 和 200 的 HTTP 狀態碼

 

4. http request node args 的 inject 節點設定了 http request 節點所需的參數

 

其餘沒介紹到節點基本為預設,不過 debug 節點記得開啟 "與調試輸出相同",我們才能在除錯視窗看到 msg 完整資訊哦。

 

 

二、情境

根據以上的流程介紹知道 /hoholive/coco/redirect 這個 API 會導向 2 次,

所以我們可以藉由調整 inject 節點裡的參數來達成以下情境:

1. 正常導向到最後

msg.maxRedirects 要大於或等於 /hoholive/coco/redirect 這個 API 的導向次數,所以設定如下:

msg.followRedirects 為 true 表示可以導向 (預設為 true),

如果為 false 就是不能導向,其實也就相當於 msg.maxRedirects = 0。

注入後得到的結果就如下:

每個導向皆有順利完成,並且會得到每個導向的資訊在 redirectList:

最後再回傳之前在 function 節點 (End redirect) 內設定的表身在 msg.payload

 

2. 中斷導向

想要中斷導向,只要將 msg.maxRedirects 小於 /hoholive/coco/redirect 這個 API 的導向次數即可,所以設定如下:

注入後得到的結果如下:

可以發現在只允許導向一次的情況下,導向第二次的時候就不導向了,並且回傳以下資訊:

redirectList 只有一次導向的資料,並且 http request 節點和 msg.payload 都會出現提示超過最大導向次數的錯誤:

 

 

三、結語

我們認識到了如何做 redirect API 、接收回傳的資訊和中斷 redirect,其中看似錯誤的中斷 redirect 方法才是應用成面最廣的,

在需要加工每個 redirect 資訊或是整合需要導向登入驗證服務都能使用這個方法來實現。

希望這次的分享可以讓各位使用者大大們對於製作登入驗證服務或是導向的更深層應用有一點幫助。

 

 

四、參考文獻

(1) node-red 官方

(2) 自己

顏綸 Lun Yan