Node.js HTTP模块
Posted jinbuqi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js HTTP模块相关的知识,希望对你有一定的参考价值。
章节
内置的HTTP模块
Node.js有一个名为HTTP的内置模块,支持超文本传输协议(HTTP)。
要导入HTTP模块,使用require()
方法:
var http = require('http');
作为Web服务器的Node.js
HTTP模块可以用来创建HTTP服务器,侦听端口,并响应客户端。
使用createServer()
方法创建HTTP服务器:
示例
var http = require('http');
//创建一个服务器对象:
http.createServer(function (req, res)
res.write('Hello World!'); //给客户端写一个响应
res.end(); //结束响应
).listen(8080); //服务器对象监听端口8080
传递给http.createServer()
方法的函数,将在端口8080被访问时执行。
将上面的代码保存在一个名为“demo_http.js”的文件中,使用Node启动该文件:
启动demo_http.js:
C:\Users\Your Name>node demo_http.js
使用浏览器访问网址:http://localhost:8080,得到输出:
Hello World!
添加HTTP报头
返回响应时,可以设置HTTP报头:
示例
var http = require('http');
http.createServer(function (req, res)
res.writeHead(200, 'Content-Type': 'text/html; charset=utf-8');
res.write('Hello World!');
res.end();
).listen(8080);
res.writeHead()
方法的第一个参数是状态代码,200表示一切正常,第二个参数是一个包含响应头的对象。
读取查询字符串
传递给http.createServer()
的函数,有一个req
参数,表示来自客户端的请求。
这个参数是一个对象(http.IncomingMessage 对象),有一个名为“url”的属性,包含了域名后面的url部分:
demo_http_url.js
var http = require('http');
http.createServer(function (req, res)
res.writeHead(200, 'Content-Type': 'text/html; charset=utf-8');
res.write(req.url);
res.end();
).listen(8080);
将上面的代码保存为“demo_http_url.js”文件,使用Node启动该文件:
启动demo_http_url.js:
G:\project\qikegu-demo\nodejs>node demo_http_url.js
当你打开下面的两个网址时,会看到不同结果:
输出:
/summer
输出:
/winter
拆分查询字符串
有一些内置模块可以拆分查询字符串,比如URL模块。
示例
拆分查询字符串:
var http = require('http');
var url = require('url');
http.createServer(function (req, res)
res.writeHead(200, 'Content-Type': 'text/html; charset=utf-8');
var q = url.parse(req.url, true).query;
var txt = q.year + " " + q.month;
res.end(txt);
).listen(8080);
将上面的代码保存为“demo_querystring.js”文件,使用Node启动该文件:
启动demo_querystring.js:
G:\project\qikegu-demo\nodejs>node demo_querystring.js
浏览器访问网址:
http://localhost:8080/?year=2019&month=July
将输出:
2019 July
以上是关于Node.js HTTP模块的主要内容,如果未能解决你的问题,请参考以下文章