服務(wù)器的搭建 Node.js
在此使用 express 搭建一個簡單的服務(wù)器,可以監(jiān)聽 post 請求并回應(yīng)躬它,代碼如下
var express = require('express'); // 基于 Node.js 平臺的 web 應(yīng)用開發(fā)框架
var bodyParser = require('body-parser'); // 一個解析 HTTP 請求體的中間件,使用這個模塊可以解析 JSON椰拒、Raw辈讶、文本、URL-encoded 格式的請求體
// 創(chuàng)建一個app對象,類似一個 web 應(yīng)用
var app = express();
// 經(jīng)過 bodyParser 的配置锉走,在 req 請求對象添加屬性,依據(jù)添加的次序嘗試解析 req.body
// parse application/json
app.use(bodyParser.json({
limit: '2mb', // 傳輸數(shù)據(jù)的大小限制
}));
// 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嘗試請求快速結(jié)束
// else
// next();
next();
});
// 接受指定路徑的請求锭魔,指定回調(diào)函數(shù)
app.post('/', function (req, res) {
if (!req.body.myRequest1) {
// 應(yīng)協(xié)商好通訊的內(nèi)容
console.log('params error!');
return;
}
res.end(JSON.stringify({'myResponse': req.body.myRequest1 + req.body.myRequest1,}));
}
// 創(chuàng)建一個 web 服務(wù)器,監(jiān)聽 8081 端口路呜,當(dāng)監(jiān)聽成功時回調(diào)
var server = app.listen(8081, function () {
var port = server.address().port; // 端口
console.log(`應(yīng)用實(shí)例迷捧,訪問地址為 ${port}`);
});
客戶端的通訊 Javascript
在此使用 fetch 來在 js 中以 json 格式與服務(wù)器建立通訊,代碼如下
var option = {
method: 'POST', // 使用 post 方法
headers: { // 設(shè)置請求頭
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8',
'Access-Control-Allow-Origin': '*',
},
body: JSON.stringify({
myRequest1: '1', // 這樣在服務(wù)器經(jīng)過 body-parser 的解析就可以直接以 req.body.myRequest1 的形式獲取該值
myRequest2: 2,
}),
};
// 訪問服務(wù)器地址并以 option 中的通訊方式發(fā)送請求
fetch('http://localhost:8081/', option).then(function (
res.json().then(myResponse => {
console.log(myResponse);
});
return;
});