一、環境搭建
首先,我們需要在本地搭建Node伺服器運行環境。安裝Node.js的方法因系統而異,以Windows為例,我們可以在官網https://nodejs.org/en/下載安裝包,或者使用npm安裝:
npm install node
安裝完成後,我們可以在命令行中輸入以下命令檢查是否安裝成功:
node -v
若能輸出Node.js的版本號,則說明安裝成功。
二、創建伺服器
接下來,我們嘗試創建一個簡單的Node伺服器。在本地創建一個名為app.js的文件,輸入以下代碼:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World!');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
代碼解析:
- 第一行引入Node.js的HTTP模塊。
- 第三行創建一個HTTP伺服器,回調函數接收請求和返迴響應。
- 第四行設置HTTP狀態碼為200。
- 第五行設置響應頭的Content-Type為text/plain。
- 第六行結束並返迴響應內容”Hello World!”。
- 第八行啟動伺服器,監聽3000埠,並輸出運行信息。
接下來,在命令行中運行app.js文件:
node app.js
控制台輸出”Server running at http://localhost:3000/”,說明伺服器成功啟動。
三、處理請求
我們可以通過request對象獲取請求相關的信息,例如URL、HTTP方法等。修改app.js文件代碼如下:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World!');
} else if (req.url === '/about') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('This is about page');
} else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('404 Not Found');
}
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
代碼解析:
- 第四行根據請求的URL進行不同的處理。
- 第五到七行返回”Hello World!”。
- 第八到十行返回”This is about page”。
- 第十一到十三行返回”404 Not Found”。
重新啟動伺服器,訪問http://localhost:3000/和http://localhost:3000/about,分別返回預期的響應內容。
四、處理POST請求
在上一節中,我們處理了GET請求。HTTP協議還定義了其他請求方法,其中最常用的POST請求,常用於提交表單數據等操作。處理POST請求需要使用Node.js的querystring模塊解析請求體。修改app.js文件代碼如下:
const http = require('http');
const querystring = require('querystring');
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
const postData = querystring.parse(body);
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end(`Hello ${postData.name}!`);
});
} else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('404 Not Found');
}
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
代碼解析:
- 第二行引入Node.js的querystring模塊,用於解析請求體。
- 第四行判斷請求方法是否為POST。
- 第五至七行監聽請求體的每個數據塊,並將它們拼接起來。
- 第八至十一行解析請求體,並返回”Hello xxx!”。
接下來,我們使用curl模擬POST請求:
curl -X POST -d "name=John" http://localhost:3000
控制台輸出”Hello John!”,說明POST請求被正常處理。
五、使用Express框架
手寫HTTP伺服器可以讓我們更深入地理解底層原理,但是對於實際開發而言,使用框架可以大大提高開發效率。Express是Node.js最常用的Web框架之一,可以快速創建RESTful API和Web應用。以下是一個使用Express創建簡單HTTP伺服器的示例:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.get('/about', (req, res) => {
res.send('This is about page');
});
app.post('/', (req, res) => {
const name = req.body.name;
res.send(`Hello ${name}!`);
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
代碼解析:
- 第一行引入Express模塊。
- 第二、三行創建Express應用實例和埠。
- 第五、九行使用app.get方法處理GET請求。
- 第十一、十四行使用app.post方法處理POST請求。
- 第十六行啟動伺服器並輸出運行信息。
使用Express框架,我們可以通過更簡潔的代碼實現相同的功能。在控制台輸入命令運行該文件,即可啟動伺服器。
六、結尾
本文講解了從環境搭建到伺服器創建與請求處理,再到使用Express框架創建HTTP伺服器的全過程。Node.js的高效、輕量級和易於擴展使其成為現代Web應用開發的必備工具。希望本文能夠對你了解和使用Node伺服器有所幫助。
原創文章,作者:IPPCX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371532.html