Node.js 从零开始:基于 Express 的服务器搭建

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

你可能感兴趣的:(Node.js 从零开始:基于 Express 的服务器搭建)