Node.js 從零開始:伺服器的搭建和與客戶端的通訊
伺服器的搭建 Node.js
在此使用 express 搭建一個簡單的伺服器,可以監聽 post 請求並回應,程式碼如下
var express = require('express'); // 基於 Node.js 平臺的 web 應用開發框架 var bodyParser = require('body-parser'); // 一個解析 HTTP 請求體的中介軟體,使用這個模組可以解析 JSON、Raw、文字、URL-encoded 格式的請求體 // 建立一個app物件,類似一個 web 應用 var app = express(); // 經過 bodyParser 的配置,在 req 請求物件新增屬性,依據新增的次序嘗試解析 req.body // parse application/json app.use(bodyParser.json({ limit: '2mb', // 傳輸資料的大小限制 })); // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ limit: '2mb', extended: true, parameterLimit: 50000, })); // 跨域 app.all("*", function (req, res, next) { // 允許跨域的域名,*代表允許任意域名跨域 res.header("Access-Control-Allow-Origin", "*"); // 允許的 header 型別 res.header("Access-Control-Allow-Headers", "*"); // 跨域允許的請求方式 res.header("Access-Control-Allow-Methods", "*"); // 如果沒有這段程式碼,解決跨域就無效,一定要加上,注意true是字串 // res.header("Access-Control-Allow-Credentials", "true"); // if (req.method.toLowerCase() == 'options') //res.send(200); // 讓options嘗試請求快速結束 // else //next(); next(); }); // 接受指定路徑的請求,指定回撥函式 app.post('/', function (req, res) { if (!req.body.myRequest1) { // 應協商好通訊的內容 console.log('params error!'); return; } res.end(JSON.stringify({'myResponse': req.body.myRequest1 + req.body.myRequest1,})); } // 建立一個 web 伺服器,監聽 8081 埠,當監聽成功時回撥 var server = app.listen(8081, function () { var port = server.address().port; // 埠 console.log(`應用例項,訪問地址為 ${port}`); });
客戶端的通訊 Javascript
在此使用 fetch 來在 js 中以 json 格式與伺服器建立通訊,程式碼如下
var option = { method: 'POST',// 使用 post 方法 headers: {// 設定請求頭 'Accept': 'application/json', 'Content-Type': 'application/json;charset=UTF-8', 'Access-Control-Allow-Origin': '*', }, body: JSON.stringify({ myRequest1: '1', // 這樣在伺服器經過 body-parser 的解析就可以直接以 req.body.myRequest1 的形式獲取該值 myRequest2: 2, }), }; // 訪問伺服器地址並以 option 中的通訊方式傳送請求 fetch('http://localhost:8081/', option).then(function ( res.json().then(myResponse => { console.log(myResponse); }); return; });