DOJO004

  • Dashool 創辦人
  • 喜歡調酒
  • Rails、Nextjs、TypeScript

Node.js - 04 HTTP 模組

JavaScript

Node.js 有一個內建的模組 “HTTP”,他允許 Node.js 透過 Hyper Text Transfer Protocol 傳輸資料。
可以這樣引入 HTTP 模組:
var http = require('http')

Node.js 作為 Web Server

HTTP 模組可以建立一個 HTTP Server 用來監聽 server ports,並向客戶端回應。
使用 createServer() 建立 HTTP server:
var http = require("http");

http
  .createServer(function (req, res) {
    res.write("Hello World");
    res.end();
  })
  .listen(8080);
當有人嘗試連接 port 8080 時,將執行 http.createServer()
儲存為 “demo_http.js” 並執行他。
$ node demo_http.js
連接 http://localhost:8080 應該會看到

新增 HTTP Header

如果來自 HTTP server 的回應顯示為 HTML,則應該要包含正確內容類型的 HTTP header。
var http = require("http");

http
  .createServer(function (req, res) {
    res.writeHead(200, { "Content-Type": "text/html" }); // add
    res.write("Hello World");
    res.end();
  })
  .listen(8080);
res.writeHead() 的第一個參數為 http 狀態碼,200 表示一切正常,第二個參數為 response headers (回應標頭)。

讀取查詢字串

http.createServer() 有一個參數 req ,將來自客戶端的請求表示為物件( http.IncomingMessage object )。
req 有一個 url 屬性,他保存網域後面 url 的部分。
var http = require("http");

http
  .createServer(function (req, res) {
    res.writeHead(200, { "Content-Type": "text/html" });
    res.write(req.url); // edit this line
    res.end();
  })
  .listen(8080);
記得 ctrl + c 結束伺服器,重新開啟。
$ node demo_http.js
網址輸入http://localhost:8080/summer,應該會看到

分割查詢字串

有一個內建模組可以輕鬆地分割查詢字串。 URL module
將程式碼修改為:
var http = require("http");
var url = require("url");

http
  .createServer(function (req, res) {
    res.writeHead(200, { "Content-Type": "text/html" });
    var q = url.parse(req.url, true).query;
    var txt = q.year + " " + q.month;
    res.end(txt);
  })
  .listen(8080);
重新開啟伺服器,輸入網址 http://localhost:8080/?year=2017&month=July,應該會看到

版權所有 © 2023 DOJO004

Deployed on Zeabur