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

当你打开下面的两个网址时,会看到不同结果:

http://localhost:8080/summer

输出:

/summer

http://localhost:8080/winter

输出:

/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


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载