Node.js Web 模块

  • 什么是Web服务器?

    Web服务器是一个软件应用程序,它处理HTTP客户端(如Web浏览器)发送的HTTP请求,并返回网页以响应客户端。Web服务器通常提供html文档以及图像,样式表和脚本。大多数Web服务器都支持服务器端脚本,使用脚本语言或将任务重定向到应用程序服务器,该应用程序服务器从数据库中检索数据并执行复杂的逻辑,然后将结果通过Web服务器发送到HTTP客户端。Apache Web服务器是最常用的Web服务器之一。这是一个开源项目,除了Apache,还有轻量级,高并发处理的开源Web服务器Nginx,也是常用的Web服务器,另外还有Windows平台的IIS服务器,等等。。
    Web应用架构
    Web应用程序通常分为四层-
    • 客户端 -该层由Web浏览器,移动浏览器或可以向Web服务器发出HTTP请求的应用程序组成。
    • 服务器 -该层具有Web服务器,它可以拦截客户端发出的请求并将响应传递给他们。
    • 业务层 -该层包含应用服务器,Web服务器使用该服务器来执行所需的处理。该层通过数据库或某些外部程序与数据层交互。
    • 数据层 -此层包含数据库或任何其他数据源。
  • 使用Node创建服务器

    Node.js提供了一个http模块,可用于创建服务器的HTTP客户端。以下是侦听8081端口的HTTP服务器的最基本结构。创建一个名为server.js的js文件-
    
    var http = require('http');
    var fs = require('fs');
    var url = require('url');
    
    // 新建一个服务器
    http.createServer( function (request, response) {  
       // 解析请求的url的文件名
       var pathname = url.parse(request.url).pathname;
       
       // 打印发出请求的文件的名称。
       console.log("请求 " + pathname + " 已收到.");
       
       //从文件系统读取请求的文件内容
       fs.readFile(pathname.substr(1), function (err, data) {
          if (err) {
             console.log(err);
             
             // HTTP Status: 404 : NOT FOUND
             // Content Type: text/plain
             response.writeHead(404, {'Content-Type': 'text/html'});
          } else {  
             //Page found   
             // HTTP Status: 200 : OK
             // Content Type: text/plain
             response.writeHead(200, {'Content-Type': 'text/html'});  
             
             // Write the content of the file to response body
             response.write(data.toString());   
          }
          
          // Send the response body 
          response.end();
       });   
    }).listen(8081);
    
    // 控制台打印消息
    console.log('Server running at http://127.0.0.1:8081/');
    
    接下来,让我们在创建server.js的同一目录中创建以下名为index.html的html文件。
    
    <html>
       <head>
          <title>Sample Page</title>
       </head>
       
       <body>
          Hello World!
       </body>
    </html>
    
    现在让我们运行server.js以查看结果-
    
    $ node server.js
    
    验证输出。
    
    Server running at http://127.0.0.1:8081/
    
  • 向Node.js服务器发出请求

    在任何浏览器中打开http://127.0.0.1:8081/index.html,以查看以下结果。
    在服务器端验证输出。
    
    请求 /index.html 已收到.
    
  • 使用Node创建Web客户端

    可以使用http模块创建Web客户端。让我们检查以下示例。创建一个名为client.js的js文件-
    
    var http = require('http');
    
    // 拥有请求的配置选项
    var options = {
       host: 'localhost',
       port: '8081',
       path: '/index.html'  
    };
    
    // 回调函数用于处理响应
    var callback = function(response) {
       // 不断更新数据流
       var body = '';
       response.on('data', function(data) {
          body += data;
       });
       
       response.on('end', function() {
          //数据已完全接收。
          console.log(body);
       });
    }
    // 向服务器发出请求
    var req = http.request(options, callback);
    req.end();
    
    现在从不同于server.js的其他命令终端运行client.js以查看结果-
    
    $ node client.js
    
    验证输出。
    
    <html>
       <head>
          <title>Sample Page</title>
       </head>
       
       <body>
          Hello World!
       </body>
    </html>
    
    在服务器端验证输出。
    
    请求 /index.html 已收到.