原生 NodeJS 搭建 Web 服务器
搭建的过程主要由以下几步:
- 导入 http 模块
- 通过 http 模块创建服务对象
- 通过服务对象监听用户请求
- 指定监听的端口号
然后就按照如上的方式博主进行搭建一遍,首先需要初始化一个 Node.js 的项目:
npm init -y
下面的操作就是如上的步骤的实现代码了, 新建 app.js:
// 1.导入 http 模块
const http = require('http');
// 2.通过 http 模块创建服务对象
const server = http.createServer();
// 3.通过服务对象监听用户请求
server.on("request", (req, resp) => {
console.log('接收到请求');
});
// 4.指定监听的端口号
server.listen(3000);
编写了如上内容之后直接通过 node.js 启动 app.js 然后在浏览器当中访问:http://localhost:3000
如上就是通过原生 NodeJS 搭建 Web 服务器的内容。
处理 Get 与 Post 请求
那么如果拿到我们所发送的请求方式呢,在前面的 node.js 文章当中已经介绍了不过这里我还是说一下,可以通过请求对象的 .method
属性即可拿到:
// 1.导入 http 模块
const http = require('http');
// 2.通过 http 模块创建服务对象
const server = http.createServer();
// 3.通过服务对象监听用户请求
server.on("request", (req, resp) => {
let reqMethod = req.method.toLowerCase();
console.log(reqMethod);
});
// 4.指定监听的端口号
server.listen(3000);
因为修改了 app.js 的内容所以需要重启,然后在访问 3000 端口:
由于浏览器当中发送不了 Post 请求,这里只能借助一些第三方工具来进行完成,可参考 01-PostMan常用玩法详解 安装一下该软件然后在进行测试发送 Post:
然后我们的代码就可以演变为如下的样子:
// 1.导入 http 模块
const http = require('http');
// 2.通过 http 模块创建服务对象
const server = http.createServer();
// 3.通过服务对象监听用户请求
server.on("request", (req, resp) => {
let reqMethod = req.method.toLowerCase();
if (reqMethod === "get") {
console.log("处理get请求");
} else if (reqMethod === "post") {
console.log("处理post请求");
}
});
// 4.指定监听的端口号
server.listen(3000);
如上就是通过 Node.js 搭建的 web 服务器,处理 get 和 Post 请求的内容。
处理不同路径(路由)
// 1.导入 http 模块
const http = require('http');
// 2.通过 http 模块创建服务对象
const server = http.createServer();
// 3.通过服务对象监听用户请求
server.on("request", (req, resp) => {
let reqMethod = req.method.toLowerCase();
// 请求路径
let url = req.url;
let path = url.split('?')[0];
if (reqMethod === "get") {
if (path === "/login") {
console.log('get 处理登录请求', path);
} else if (path === '/register') {
console.log('get 处理注册请求', path);
}
} else if (reqMethod === "post") {
if (path === "/login") {
console.log('post 处理登录请求', path);
} else if (path === '/register') {
console.log('post 处理注册请求', path);
}
}
});
// 4.指定监听的端口号
server.listen(3000);
发送 get/login/register:
发送 post/login/register:
处理(获取)请求参数
对于请求参数而言,由于 get 和 Post 的请求参数传递的都是不同的,为了方便进行处理请求参数最好就是都统一转换为对象进行使用最为方便:
// 1.导入 http 模块
const http = require('http');
const queryString = require('querystring');
// 2.通过 http 模块创建服务对象
const server = http.createServer();
// 3.通过服务对象监听用户请求
server.on("request", (req, resp) => {
let reqMethod = req.method.toLowerCase();
// 请求路径
let url = req.url;
let path = url.split('?')[0];
let params = '';
if (reqMethod === "get") {
params = url.split('?')[1];
params = queryString.parse(params);
if (path === "/login") {
console.log('get 处理登录请求', params);
} else if (path === '/register') {
console.log('get 处理注册请求', params);
}
} else if (reqMethod === "post") {
req.on('data', (chuck) => {
params += chuck;
});
req.on('end', () => {
params = queryString.parse(params);
if (path === "/login") {
console.log('post 处理登录请求', params);
} else if (path === '/register') {
console.log('post 处理注册请求', params);
}
});
}
});
// 4.指定监听的端口号
server.listen(3000);
重启 app.js,首先看发送 get 请求携带参数:
发送 Post 请求并且携带参数,Post 的请求参数是放在请求体当中的所以在 Postman 当中需要选择请求体的传参方式, 就是以表单的方式提交即可: