2018年5月23日 星期三

Node-RED 的基礎概念(HTTP Endpoint)網頁服務功能



Node-RED 的基礎概念(HTTP Endpoint)網頁服務功能

源自於
https://hugolin168.wordpress.com/2018/03/01/nodered401/
Node-RED 在[1]官方網站Cookbook 之中,將它整個系統分為下列幾個區塊的基礎課課,進行討論,本篇針對Messages 訊息處理進行讀後心得分享。
  • Messages
  • Flow control
  • Error handling
  • HTTP Endpoint
  • HTTP requests
  • MQTT
試用一下,即然Node-RED的操作功能是用web 方式來進行的,那是不是可以新增一頁來放網頁資料,並且做與Node-RED流程的輸入及輸出介面之一,舉例說明:假設我將Raspberry Pi 3安裝好Node-RED (己有HTTP Endpoint)那我何須再另外再寫再開一個http 的服務或Linux API 或Console 來狀態做即時的展示出來呢?
本篇即是再探討關於網頁服務功能,應用在Node-RED是要如何進行的,在網頁服務功能(HTTP Endpoint) 說明,分成下列幾類進行說明:
  1. 創建一個HTTP服務端點 (Create an HTTP Endpoint)
  2. 傳遞給HTTP端點使用查詢參數方式(Handle query parameters passed to an HTTP endpoint)
  3. 處理HTTP端點使用URL參數方式(Handle url parameters in an HTTP endpoint)
  4. 存取HTTP請求標頭設計(Access HTTP request headers)
  5. 從另一個流程控制中抓數數據(Include data captured in another flow)
  6. 提供JSON內容(Serve JSON content)
  7. 提供本地文件(Serve a local file)
  8. 將原始數據發佈到流程(Post raw data to a flow)
  9. 將表單數據發佈到流程(Post form data to a flow)
  10. 將JSON數據發佈到流程(Post JSON data to a flow)
  11. cookie應用範例(Work with cookies)

1.創建一個HTTP服務端點 (Create an HTTP Endpoint)

如同Hello World !!的第101課程一樣,如何開啟網頁並秀出Hello World !! 即是本章節要引導大家來進行的,假設我的Node-RED 服務的電腦的IP 為 192.168.1.100,所以我可以用http://192.168.1.100:1880/ 來開啟Node-RED 編輯器,若我想要在下面的網址上秀Hello World !! 要怎麼做呢?
利用IP SCAN來測試自己的IP  192.168.1.100:1880/hello

如下圖1,先拉一個Input->http,後面再接一個function->template,最後再接一個output->http response 。
02202-03.png
如下圖2,將Input->http 點2下開啟,將URL 填hello ( 因為我們目標是 http://192.168.1.100:1880/hello ,如果你網址後面要是ooxx ,記得要改URL的文字喲。
02202-01
如下圖3,在function->template 上面點2下開啟,在Template 裏面填寫HTML5 的網頁語法。
02202-02
最後按下Deploy 後,如下圖在瀏覽器開啟新頁輸入 http://192.168.1.100:1880/hello即可會出現下面的畫面。
02202-04

範例程式碼:Node-RED的json code , 請在Node-RED編輯畫面上按[Ctrl]+[I]將json 碼貼上即可
[{“id":"2fb4c941.7b44e6″,"type":"http in","z":"ddb34c49.89684″,"name":"","url":"/hello","method":"get","upload":false,"swaggerDoc":"","x":180,"y":220,"wires":[[“40559a3f.1ca6d4″]]},{“id":"40559a3f.1ca6d4″,"type":"template","z":"ddb34c49.89684″,"name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n <head></head>\n <body>\n <h1>Hello World!!</h1>\n </body>\n</html>","x":330,"y":220,"wires":[[“f22db627.b84f2″]]},{“id":"f22db627.b84f2″,"type":"http response","z":"ddb34c49.89684″,"name":"","statusCode":"","headers":{},"x":470,"y":220,"wires":[]}]


沒有留言:

張貼留言