服务器的搭建 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;
});