700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Node.js使用http模块创建Web服务器

Node.js使用http模块创建Web服务器

时间:2018-11-08 04:07:06

相关推荐

Node.js使用http模块创建Web服务器

文章目录

前言一、导入http模块二、创建服务器对象 http.createServer()listen()close()三、创建请求、响应对象 请求对象req响应对象res

前言

Node.js核心模块——http模块,用以创建Web服务器,从而对外提供Web资源服务。本章简明扼要地阐述使用http模块内置http.createServer()方法实例化http.Server类,并创建请求、响应对象,搭建简单的Web服务器。完整API参照官方文档:http 超文本传输协议 | Node.js API 文档

一、导入http模块

我们通过以下方式来引入该模块:

const http = require('http');

二、创建服务器对象

http.createServer()

通过http模块内置方法:http.createServer(),创建一个新的服务器时,将会实例化http.Server类,从而创建一个服务器对象

// 导入http模块const http = require('http');// 创建Web服务器对象const server = http.createServer();

如上:当要有了服务器对象server后,便可以访问其方法:listen()与close()

listen()

服务器对象通过.listen(端口号, 回调)方法启动HTTP服务器:

// 导入http模块const http = require('http');// 创建Web服务器对象const server = http.createServer();// 监听端口号5005并启动HTTP服务器server.listen(5005, () => {console.log('Web服务器启动成功啦!')})

终端输入node指令启动服务器:

close()

同理,服务器对象通过调用.close([callback])方法,停止服务器并不再接受新的连接

三、创建请求、响应对象

当创建完服务器对象并可以通过listen()设置端口启动服务器后,我们需要监听客户端发来的请求,并且还需要向客户端做出响应,我们可以使用node.js事件触发器.on()方法为服务器对象绑定request事件,当客户端访问服务器时,触发事件处理函数:

// 服务器实例通过.on()方法为服务器绑定request事件,监听客户端发来的请求,触发事件处理函数server.on('request', (req, res) => {console.log('Web服务器被访问啦!')})

我们通过浏览器输入本地服务器地址检验:

请求对象req

当服务器实例监听request事件时,将会创建类http.IncomingMessage的实例对象,通常叫做请求对象req,作为事件处理函数的第一个参数,用来访问与客户端请求相关的数据和属性,如:

使用statusCodestatusMessage方法来访问状态。使用headers方法或rawHeaders来访问消息头。使用method方法来访问 HTTP 方法。使用httpVersion方法来访问 HTTP 版本。使用url方法来访问 URL。使用socket方法来访问底层的 socket。

例如:

// 导入http模块const http = require('http');// 创建Web服务器实例const server = http.createServer();// 服务器实例通过.on()方法为服务器绑定request事件,监听客户端发来的请求,触发事件处理函数server.on('request', (req, res) => {// req.httpVersion访问http版本const version = req.httpVersion;// req.url访问客户端请求的 URL 地址const url = req.url;// req.method访问客户端请求的 method 类型const method = req.method;const str = `Your request url is ${url}, request method is ${method} and httpVersion is ${version}`;console.log(str);})// 服务器实例通过.listen(端口号, 回调)方法启动Web服务器server.listen(5005, () => {console.log('Web服务器启动成功啦!')})

启动服务器并访问url为post的地址:

响应对象res

同理,http.ServerResponse类也会创建实例对象,通常称作响应对象res,作为事件处理函数的第二个参数,在事件处理函数中,响应对象res通过调用end()方法用于将服务器的数据或属性响应给客户端,如:

// 服务器实例通过.on()方法为服务器绑定request事件,监听客户端发来的请求,触发事件处理函数server.on('request', (req, res) => {const version = req.httpVersion;const url = req.url;const method = req.method;const str = `Your request url is ${url}, request method is ${method} and httpVersion is ${version}`;// 调用res.end()方法向客户端响应一些内容res.end(str);})

启动并访问服务器即可收到响应数据字符串:

同时,该对象提供一些方法与HTTP消息头进行交互,如我们可以通过res.setHeader('Content-Type', 'text/html; charset=utf-8'),规定编码格式,解决响应中文乱码。

const testChinese = '测试中文乱码!'; // 若不设置响应头将会乱码// 设置响应头,解决中文乱码res.setHeader('Content-Type', 'text/html; charset=utf-8');// 调用res.end()方法向客户端返回中文字符串res.end(testChinese);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。