Node.js – 使用 express 模組建立 Web Server

前一篇 http://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!%  
沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料