Node.js HTTP 模块

内置 HTTP 模块

Node.js 具有一个名为 HTTP 的内置模块,该模块 Node.js 通过超文本传输协议(HTTP)传输数据。

要引用 HTTP 模块, 请使用 require() 方法:

  1. var http = require('http');

Node.js 作为 web 服务

HTTP 模块可以创建一个 HTTP 服,该服务器监听服务端口并将响应返回到客户端。

使用 createServer() 方法创建一个 HTTP 服务:

实例
  1. var http = require('http');
  2. //create a server object:
  3. http.createServer(function (req, res) {
  4. res.write('Hello World!'); //write a response to the client
  5. res.end(); //end the response
  6. }).listen(8080); //the server object listens on port 8080

这个函数被传递到 http.createServer() 方法, 当有人通过端口 8080 访问计算机时,将执行 http.createServer() 方法。

将上述代码保存在一个名为 "demo_http.js" 的文件中,并启动该文件:

初始化 demo_http.js:

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

如果您在计算机上执行了相同的步骤,您将看到与示例相同的结果:

  1. http://localhost:8080

添加 HTTP 标头

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

实例
  1. var http = require('http');
  2. http.createServer(function (req, res) {
  3. <strong> res.writeHead(200, {'Content-Type': 'text/html'});
  4. </strong> res.write('Hello World!');
  5. res.end();
  6. }).listen(8080);

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


读取 Query String

该函数被传递到 http.createServer() 有一个代表客户端请求的 req 参数,它是一个对象(http.IncomingMessage 对象)。

此对象有一个名为 "url" 的属性,该属性保存域名后面的 url 部分

demo_http_url.js

  1. var http = require('http');
  2. http.createServer(function (<strong>req</strong>, res) {
  3. res.writeHead(200, {'Content-Type': 'text/html'});
  4. res.write(<strong>req.url</strong>);
  5. res.end();
  6. }).listen(8080);

将代码保存在名为 "demo_http_url.js" 的文件中并启动该文件:

启动 demo_http_url.js:

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

如果您在计算机上执行了相同的步骤,打开这两个地址时应该会看到两个不同的结果:

  1. http://localhost:8080/summer

将产生这个结果:

  1. /summer

  1. http://localhost:8080/winter

将产生这个结果:

  1. /winter

拆分 Query String

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

实例

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

  1. var http = require('http');
  2. <strong>var url = require('url');
  3. </strong>
  4. http.createServer(function (req, res) {
  5. res.writeHead(200, {'Content-Type': 'text/html'});
  6. <strong> var q = url.parse(req.url, true).query;
  7. </strong> var txt = <strong>q.year</strong> + " " + <strong>q.month</strong>;
  8. res.end(txt);
  9. }).listen(8080);

将上述代码保存在一个名为 "demo_querystring.js" 的文件中,并启动该文件:

启动 demo_querystring.js:

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

地址是:

  1. http://localhost:8080/?year=2017&amp;month=July

结果如下:

  1. 2017 July