1. Node http模块介绍
Node.js是一种服务器端JavaScript解释器,它允许开发人员使用Node.js http模块来构建Web服务器和网络应用程序。http模块可以处理HTTP请求和响应。通过http模块,可以实现创建Web服务器、获取客户端的请求、向客户端发送响应等功能。
2. 创建http服务器
2.1 http.createServer()
我们可以使用http.createServer()方法来创建http服务器。下面是http.createServer()方法的语法。
const http = require('http');
http.createServer(function (req, res) {
// Handle request
}).listen(3000);
上面的代码可以创建一个HTTP server对象,并监听来自端口3000的请求。
强调:回调函数在服务器每次接收到请求时被调用,并用请求和响应对象作为参数。请求对象req包含客户端请求相关的参数和方法,例如URL、HTTP方法等。响应对象res包含服务器响应相关的参数和方法,例如发送响应头、结束响应等。
2.2 req和res对象
前面已经提到,当有请求到来时,回调函数的参数中,req和res对象起着非常重要的作用。下面,我们分别了解一下这两个对象的常用属性和方法。
2.2.1 req对象
req对象代表客户端发送给服务器的请求。
req.url:请求的URL.
req.method:请求的HTTP方法,例如GET或POST等。
req.headers:请求头信息。
2.2.2 res对象
res对象代表服务器要发送给客户端的响应。
res.end():结束响应,即向客户端发送响应数据。
res.writeHead():设置响应头信息。
res.write():向响应中写入数据。
3. 创建路由
路由是指将客户端请求映射到服务器上的响应。在Node.js中,我们可以使用http.createServer()和req.url来实现路由功能。下面是一个简单的路由例子:
const http = require('http');
http.createServer(function (req, res) {
if (req.url === '/') {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
} else if (req.url === '/about') {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('About us
');
res.end();
} else if (req.url === '/contact') {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Contact us
');
res.end();
} else {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.write('404 Not Found');
res.end();
}
}).listen(3000);
上面的代码可以将根路径"/"、"about"和"contact"路由到不同的响应页面。
4. 使用第三方模块
在Node.js中,我们可以使用第三方模块来更快地构建Web服务器。下面是一个使用Express框架的例子:
const express = require('express');
const app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.get('/about', function (req, res) {
res.send('About us
');
});
app.get('/contact', function (req, res) {
res.send('Contact us
');
});
app.listen(3000, function () {
console.log('Server started on port 3000');
});
上面的代码使用了Express框架,实现了与前面例子相同的功能。需要注意的是,使用Express框架可以更方便地处理路由和中间件,详细的使用文档可以查看Express官网。
5. 小结
本文介绍了Node.js http模块的基本用法,包括创建http服务器、req和res对象、创建路由以及使用第三方模块。Node.js作为一种服务器端JavaScript解释器,具有强大的网络开发能力,可以实现Web服务器和网络应用程序的开发。在使用Node.js时,开发人员可以根据自己的实际情况选择使用原生http模块或第三方模块,以提高开发效率。