HTTP模块

Node.js 有一个内置的HTTP模块,允许 Node.js 使用超文本传输协议(HTTP)传输数据。

我们使用 require 函数来引入 HTTP 模块。

  1. var http = require('http')

Node.js作为web服务器

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

使用 createServer 方法来创建一个 HTTP 服务器:

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

传递到 http.createServer() 中的回调函数,将会在访问 8080 端口时被执行。

把上述代码保存到一个命名为 demo_http.js 的文件中,并初始化该文件:

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

如果你遵循了上述步骤,访问 http://localhost:8080 ,你将会看到和例子中一样的结果。

添加HTTP头部

如果 HTTP 服务器返回的内容需要以 HTML 的格式展示,你需要在 HTTP 头部中包含一个正确的文本类型:

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

res.writeHead() 函数的第一个参数是状态码,200 表示 ok 。第二个参数是一个包含响应头部的对象。

读取查询字符串

http.createServer() 的回调函数中,有一个 req 参数,代表从客户端传来的请求对象(继承于 http.IncomingMessage 对象)。

这个对象有一个 url 的属性,保存着域名之后的 url参数部分

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

把上述代码保存到一个名为 demo_http_url.js 的文件中,并初始化文件。

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

如果你遵循了上述的步骤,访问以下两个地址,你将会得到两个不同的结果。

http://localhost:8080/summer

会产生这个结果: /summer

http://localhost:8080/winter

会产生这个结果: /winter

分割查询字符串

有一些内置模块可以很容易地把查询字符串分割为可读的结构,比如 URL 模块。

  1. // 分割查询字符串为可读结构
  2. var http = require('http');
  3. var url = require('url');
  4.  
  5. http.createServer(function (req, res) {
  6. res.writeHead(200, {'Content-Type': 'text/html'});
  7. var q = url.parse(req.url, true).query;
  8. var txt = q.year + " " + q.month;
  9. res.end(txt);
  10. }).listen(8080);

把上述代码保存到一个名为demo_querystring.js的文件,并初始化文件。

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

访问以下地址:

http://localhost:8080/?year=2017&month=July

会产生这个结果: 2017 July

下一步

订阅更新,获取更多学习资料,请关注我们的 微信公众号

../_images/wechat-mp-qrcode.png小菜学编程

微信打赏