On this page

Node.js HTTP 模块

内置 HTTP 模块

Node.js 有一个内置模块叫做 HTTP,它允许 Node.js 通过超文本传输​​协议(HTTP)传输数据。 要包含 HTTP 模块,请使用以下 require()命令: var http = require('http');


Node.js 作为 Web 服务器

HTTP 模块可以创建一个 HTTP 服务器,监听服务器端口并向客户端返回响应。 使用该createServer()方法创建HTTP服务器:

例子

var http = require('http');

//create a server object: 
http.createServer(function (req, res) {
  res.write('Hello World!'); 
  //write a response to the client   
  res.end();
  //end the response 
  }).listen(8080);
  //the server object listens on port 8080

传递给该方法的函数http.createServer() 将在有人尝试访问端口 8080 上的计算机时执行。 将上述代码保存在名为“demo_http.js”的文件中,并启动该文件: 启动demo_http.js: C:\Users\Your Name>node demo_http.js 如果你在计算机上执行了相同的步骤,你将看到与示例相同的结果:http://localhost:8080


添加 HTTP 标头

如果 HTTP 服务器的响应应该显示为 HTML,则应该包含具有正确内容类型的 HTTP 标头:

例子

var http = require('http');
http.createServer(function (req, res) {
**  res.writeHead(200, {'Content-Type': 'text/html'});
**  res.write('Hello World!');
  res.end();
}).listen(8080);

该方法的第一个参数res.writeHead()是状态码,200 表示一切正常,第二个参数是一个包含响应头的对象。


读取查询字符串

传递给该函数的参数http.createServer() 有一个req表示来自客户端的请求的对象(http.IncomingMessage 对象)。 该对象有一个名为“url”的属性,它保存了域名后面的 url 部分: 演示_http_url.js

var http = require('http');
http.createServer(function (**req**, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write(**req.url**);
  res.end();
}).listen(8080);

将上述代码保存在名为“demo_http_url.js”的文件中并启动该文件: 启动demo_http_url.js: C:\Users\Your Name>node demo_http_url.js 如果你在计算机上执行了相同的步骤,打开这两个地址时应该会看到两个不同的结果: http://localhost:8080/summer 将产生这样的结果: /summer

http://localhost:8080/summer 将产生这样的结果: /winter


拆分查询字符串

有内置模块可以轻松地将查询字符串拆分为可读的部分,例如 URL 模块。

例子

将查询字符串拆分为可读的部分:

var http = require('http');
var url = require('url');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true).query;
  var txt = q.year + " " + q.month;
  res.end(txt);
}).listen(8080);

将上述代码保存在名为“demo_querystring.js”的文件中并启动该文件: 启动demo_querystring.js:

C:\Users\Your Name>node demo_querystring.js