1. 程式人生 > >Node JS http模組

Node JS http模組

前言

本人所發的NodeJS系列學習筆記參考了一些書籍、官方文件以及一些前輩的程式碼及註釋,可能有些地方理解的不對。如果有誤,歡迎到我的github上提出。當然,希望可以點個星星。

node-http

Node.js提供了http模組,用於搭建HTTP服務端和客戶端。

建立Web伺服器

server.js

/**
 * node-http 服務端
 */
let http = require('http');
let url = require('url');
let fs = require('fs');

// 建立伺服器
let server = http.createServer((req, res) => {
    // 解析請求
    let pathname = url.parse(req.url).pathname; // 形如`/index.html`
    console.log('收到對檔案 ' + pathname + '的請求');

    // 讀取檔案內容
    fs.readFile(pathname.substr(1), (err, data) => {
        if (err) {
            console.log('檔案讀取失敗:' + err);

            // 設定404響應
            res.writeHead(404, {
                'Content-Type': 'text/html'
            });
        }
        else {
            // 狀態碼:200
            res.writeHead(200, {
                'Content-Type': 'text/html'
            });

            // 響應檔案內容
            res.write(data.toString());
        }

        // 傳送響應
        res.end();
    });
});

server.listen(8081);

console.log('服務執行在:http://localhost:8081,請訪問:http://localhost:8081/index.html');

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Node http</title>
</head>
<body>
    <h1>Hi~</h1>
</body>
</html>

執行server.js,開啟瀏覽器訪問。

建立客戶端

  • client.js
/**
 * node http 建立客戶端
 */
let http = require('http');

// 請求選項
let options = {
    host: 'localhost',
    port: '8081',
    path: '/index.html'
};

// 處理響應的回撥函式
let callback = (res) => {
    // 不斷更新資料
    let body = '';

    res.on('data', (data) => {
        body += data;
    });

    res.on('end', () => {
        console.log('資料接收完成');
        console.log(body);
    });
}

// 向服務端傳送請求
let req = http.request(options, callback);
req.end();

執行server.js,再執行client.js