前一篇 https://benjr.tw/103424 使用 http(內建模組) 建立 Web Server,這一次使用 Express 模組建立 Web Server .
測試環境為 CentOS 8 x86_64
Node.JS
Node.JS 所需套件須透過 npm 來下載,所以必須安裝 npm (Node Package Manager) 套件.
[root@localhost ~]# yum install -y nodejs [root@localhost ~]# yum install -y npm
檢視一下 Node.JS 與 npm 版本.
[root@localhost ~]# node -v v10.23.1 [root@localhost ~]# npm -v 6.14.10
安裝 express 模組
[root@localhost ~]# npm install express
參考 – https://expressjs.com/zh-tw/4x/api.html 使用 express 模組提供的函數來建立 Web Server.
[root@localhost ~]# vi Node.js var express = require('express') var app = express() app.get('/', function (req, res) { res.send('hello world') }) app.listen(3000)
程式說明:
var express = require('express') var app = express()
- var 變數宣告 ( let , const 也是變數宣告,但這3種使用上略微不同) .
- 透過 require 去載入模組.並把得到的 屬性 (變數) 儲存到變數 express.
- 透過 express() 函數 (top-level function ),得到回傳的物件?(同時有多個屬性或是函式).
app.get('/', function (req, res) { res.send('hello world') })
app.get(path, callback [, callback …]) 函數
Routes HTTP GET requests to the specified path with the specified callback functions.
- path – The path for which the middleware function is invoked . ( 預設為 ‘/’ root path )
- callback – Callback functions.
function (req, res) { res.send('hello world') }
這個是 中介軟體(middleware)的使用,他的特別之處就是就是在收到請求後和傳送響應之前來執行的函數,使用中介軟體函式樹的方式如下.
function (req, res, next) { }
以這是範例來說其中的 res 為客戶端向 http server 發送過來的請求 req(require : 請求物件) ,以及回應 res(respone : 響應物件). 第三個則是繼續處理中介軟體的請求.
app.listen(3000)
app.listen([port[, host[, backlog]]][, callback]) 函數,可以用來使用 http server listen 的埠.
執行結果
伺服器端透過 node.js 執行該程式.
[root@localhost ~]# node Node.js Server running at http://${hostname}:${port}/
以下是在 Mac OS 執行,透過 curl (文字版的遊覽器),來檢視一下 http server : port 3000 ,的確有看到程式在執行.
Ben@Ben10 ~ % curl http://192.168.111.22:3000 Hello World!%
剛剛只有定義了 / (root path )這個路由路徑,下面範例同時使用不同路徑來顯示相對應訊息.
[root@localhost ~]# vi Node2.js const express = require('express'); const app = express(); const hostname = '127.0.0.1'; const port = 3000; app.get('/', function (req, res) { res.send('Hello World!'); }); app.get('/about', function (req, res) { res.send('About this web!'); }); app.listen(3000, function () { console.log('Server running at http://${hostname}:${port}/'); });
執行結果
伺服器端透過 node.js 執行該程式.
[root@localhost ~]# node Node2.js Server running at http://${hostname}:${port}/
以下是在 Mac OS 執行,透過 curl (文字版的遊覽器),來檢視一下 http server : port 3000 ,的確有看到程式在執行.
Ben@Ben10 ~ % curl http://192.168.111.22:3000 Hello World!% Ben@Ben10 ~ % curl http://192.168.111.22:3000/about About this web!%