Node.js HTTP软件包–创建HTTP服务器

时间:2020-02-23 14:41:10  来源:igfitidea点击:

HTTP服务器可满足客户端请求并发送适当的响应。
例如,theitroad也正在HTTP服务器上运行。
如果您直接到达其中我建议您阅读有关NodeJS IO包和NodeJS模块的早期文章,因为我们将在这里使用该知识来创建简单的HTTP服务器Node.js应用程序。

在本文中,我们将讨论有关Node JS Platform" HTTP"模块以开发HTTP服务器的信息。

Node JS HTTP模块简介

在Java或者任何其他语言框架中,实现HTTP服务器都是一项艰巨的任务,这就是为什么我们拥有如此多的HTTP服务器(例如Apache,Tomcat等)的原因。
但是,我们可以很容易地使用Node JS Platform开发简单的HTTP服务器。
我们不需要编写太多代码即可开发,启动和运行基本的HTTP Server。

与某些Node模块(例如" npm"," fs"等)一样,Node JS" http"模块也是基本Node JS平台的一部分。
我们无需执行任何操作即可设置Node JS HTTP模块。

我们只需要导入" http"模块并开始编写一些代码来开发HTTP服务器。

导入" http"模块:

var http = require("http");

此require()调用将Node JS HTTP模块导入缓存。
完成后,我们可以使用NODE JS HTTP API开发HTTP Server。

NodeJS简单HTTP服务器

其中我们将逐步学习如何创建一个简单的HTTP服务器。

  • 创建一个简单的Node JS项目,请参阅带有Node REPL(CLI)和Node IDE的Node JS基本示例以获取详细步骤。

  • 使用以下内容创建package.json文件。

  • 创建具有以下内容JavaScript文件:http-server.js。

只需上述几行代码,我们就可以创建一个简单的HTTP服务器。
下面是代码不同部分的说明。
第一行,require()调用将http模块加载到缓存中以使用Node JS HTTP API。

  • 第二行,使用HTTP API创建服务器。

  • 第三行,HTTP Server侦听端口号:8001

下图显示了目前的项目结构。

  • 在$$ECLIPSE_WORKSPACE}/http-server项目中打开命令提示符,然后运行" node http-server.js"命令。

如果在这里观察到,命令正在等待客户端请求,这意味着我们简单的Node JS HTTP Server已启动并成功运行。

但是,它无法使用此简单的HTTP Server处理任何请求。
为了处理或者向客户请求提供服务,我们需要添加一些路由。
请参考下一部分以扩展此基本HTTP Server程序以处理客户端请求。

Node JS HTTP Server如何处理客户端请求

现在,我们将添加一些代码来接收和处理HTTP客户端请求。

在Eclipse IDE中打开http-server.js文件,并添加一个JavaScript函数来表示请求和响应对象。

{
"name": "http-server",
"version": "1.0.0",
"description": "Simple HTTP Sever",
"main": "http-server",
"author": "theitroad",
"engines":{
	"node":"*"
	}
}

其中匿名函数将请求和响应作为参数。
当HTTP客户端在端口号8001发送请求时,该匿名函数将接收该请求。

让我们添加一些代码以发送对客户请求的响应。

http-server.js

/**
 * theitroad  
 * Simple HTTP Server Example
 */
var http = require("http");
var httpserver = http.createServer();
httpserver.listen(8001);

其中当HTTP服务器接收到客户端请求时,它将在服务器控制台上打印一条日志消息,并将响应消息发送到客户端。
只需在命令提示符下再次启动服务器,如果先前的服务器正在运行,则需要关闭并重新启动它。

现在打开浏览器并转到URLhttps://localhost:8001 /,您将获得以下响应。

同时,您将在命令提示符下观察服务器日志,如下所示。

NodeJS HTTP服务器路由

到目前为止,我们已经开发了一个简单的Node JS HTTP Server,它仅接收HTTP客户端请求并将一些响应发送到服务器。
这意味着它仅处理一种请求:当客户端访问此URL时," /":" https://localhost:8001"

使用此基本HTTP Server不足以运行一些实时应用程序。
要处理各种类型的客户端请求,我们应该将"路由"添加到HTTP服务器。

使用以下内容创建一个新JavaScript文件" http-server-simple-routing.js"。

http-server-simple-routing.js

/**
 * theitroad  
 * Simple HTTP Server Example
 */
var http = require("http");
var httpserver = http.createServer(
			function(request,response){
				
			}
		);
httpserver.listen(8001);

其中我们使用另一个Node JS Platform Default模块:" url"。
这意味着我们不需要手动安装它,它会随基本Node JS Platform安装一起提供。

具有两个参数的匿名函数:请求和响应。
request对象包含一个属性:url,其中包含客户端请求的url。

然后,我们调用url.parse(request.url).pathname获取客户端请求url。
假设客户端使用https://localhost:8001/url发送请求,则url.parse(request.url).pathname返回" /"。

我们将url.parse(request.url).pathname值的输出保存到本地变量:clientRequestPath中。
我们正在将switch()块与一种情况和默认块一起使用。
如果用户使用" /"发送请求,则服务器执行switch:case块并将相应的响应发送给客户端。

如果用户发送不同的请求,则服务器将执行switch:default块并将相应的响应发送到客户端。

我们将使用response.end()调用关闭Response对象。

打开命令提示符/终端,然后启动节点http服务器" http-server-simple-routing.js",并从客户端浏览器发送两个不同的请求,并观察响应。

情况1:客户端使用https://localhost:8001/url发送" /"请求,您将在浏览器中看到以下响应。

情况2:客户端使用https://localhost:8001/index.htm url发送" /index.htm"请求,并获得以下响应。