通过nodeJs实现基本的HTTP服务zai

1.在任意路径下新建一个http.js文件。


2.在http.js 文件中创建简单的http服务。

  • 在使用 HTTP 服务器与客户端交互,需要 require('http')
  • 声明http协议
var http = require('http');

  • 获取服务器对象
  • 通过 http.createServer([requestListener]) 创建一个服务。
var server = http.createServer();
  • 声明端口号,开启服务。
  • server.listen([port][, host][, backlog][, callback])
server.listen(9000,function(){
    console.log('服务器正在端口号:9000上运行......');
})
  • 给server 实例对象添加request请求事件,该请求事件是所有请求的入口。
  • 任何请求都会触发改事件,然后执行事件对应的处理函数。
server.on('request',function(){
    console.log('收到客户端发出的请求.......');
});

3.启动服务,在DOS窗口中输入命令:node http.js  

  • 观察DOS窗口现象:

  • 服务开启后,打开浏览器,在地址栏中输入:127.0.0.1:9000   ,回车。

4.设置请求处理函数,返回服务器响应信息。

  • 代码片段:
server.on('request',function(request,response){
		
		console.log('收到客户端发出的请求.......');
		console.log('当前请求路径:'+request.url);
		response.writeln('hello nodeJs');
		response.writeln('hello Albert');
		console.log('响应客户端发出的请求.......');
		// 响应完成后主动结束响应。
		response.end();
	});
  • 重新开启nodejs 服务器,并在地址栏中输入:127.0.0.1:9000   ,回车。


  • 在浏览器中打出了响应的结果:hello nodeJs hello Albert
  • 完整代码:
	/**
		
	1.使用 HTTP 服务器与客户端交互,需要 require('http')。
		声明http协议
	*/
	var http = require('http');

	/**
	2.获取服务器对象
		1.通过 http.createServer([requestListener]) 创建一个服务

		requestListener <Function>
		返回: <http.Server>
		返回一个新建的 http.Server 实例。
		对于服务端来说,主要做三件事:
		1.接受客户端发出的请求。
		2.处理客户端发来的请求。
		3.向客户端发送响应。
	*/
	
	var server = http.createServer();

	/**
	3.声明端口号,开启服务。
		server.listen([port][, host][, backlog][, callback])

		port <number> :端口号
		host <string> :主机ip
		backlog <number> server.listen() 函数的通用参数
		callback <Function> server.listen() 函数的通用参数
		Returns: <net.Server>
		启动一个TCP服务监听输入的port和host。

		如果port省略或是0,系统会随意分配一个在'listening'事件触发后能被server.address().port检索的无用端口。

		如果host省略,如果IPv6可用,服务器将会接收基于unspecified IPv6 address (::)的连接,否则接收基于unspecified IPv4 address (0.0.0.0)的连接
	
	*/
	server.listen(9000, function(){
		 console.log('服务器正在端口号:9000上运行......');
	})
	
	
	/**
	4.给server 实例对象添加request请求事件,该请求事件是所有请求的入口。
		任何请求都会触发改事件,然后执行事件对应的处理函数。
	
		server.on('request',function(){
			 console.log('收到客户端发出的请求.......');
		});
	*/
	//server.on('request',callbackFun)
	
	
	/**
	5.设置请求处理函数。
		请求回调处理函数需要接收两个参数。
		request :request是一个请求对象,可以拿到当前浏览器请求的一些信息。
			eg:请求路径,请求方法等
		response: response是一个响应对象,可以用来给请求发送响应。
	
	*/
	server.on('request',function(request,response){
		
		console.log('收到客户端发出的请求.......');
		console.log('当前请求路径:'+request.url);
		response.write('hello nodeJs ');
		response.write(' hello Albert');
		console.log('响应客户端发出的请求.......');
		// 响应完成后主动结束响应。
		response.end();
	});
	
	
	var callbackFun = function(request,response){
		
		console.log('收到客户端发出的请求.......');
		console.log('当前请求路径:'+request.url);
		response.write('hello nodeJs');
		response.write('hello Albert');
		console.log('响应客户端发出的请求.......');
		// 响应完成后主动结束响应。
		response.end();
	}

5.根据不同的请求路径处理不同响应。

  • 代码片段
	/**
		
	1.使用 HTTP 服务器与客户端交互,需要 require('http')。
		声明http协议
	*/
	var http = require('http');

	/**
	2.获取服务器对象
		1.通过 http.createServer([requestListener]) 创建一个服务

		requestListener <Function>
		返回: <http.Server>
		返回一个新建的 http.Server 实例。
		对于服务端来说,主要做三件事:
		1.接受客户端发出的请求。
		2.处理客户端发来的请求。
		3.向客户端发送响应。
	*/
	
	var server = http.createServer();

	/**
	3.声明端口号,开启服务。
		server.listen([port][, host][, backlog][, callback])

		port <number> :端口号
		host <string> :主机ip
		backlog <number> server.listen() 函数的通用参数
		callback <Function> server.listen() 函数的通用参数
		Returns: <net.Server>
		启动一个TCP服务监听输入的port和host。

		如果port省略或是0,系统会随意分配一个在'listening'事件触发后能被server.address().port检索的无用端口。

		如果host省略,如果IPv6可用,服务器将会接收基于unspecified IPv6 address (::)的连接,否则接收基于unspecified IPv4 address (0.0.0.0)的连接
	
	*/
	server.listen(9001, function(){
		 console.log('服务器正在端口号:9001上运行......');
	})
	
	
	/**
	4.给server 实例对象添加request请求事件,该请求事件是所有请求的入口。
		任何请求都会触发改事件,然后执行事件对应的处理函数。
	
		server.on('request',function(){
			 console.log('收到客户端发出的请求.......');
		});
	*/

	
	/**
	5.设置请求处理函数。
		请求回调处理函数需要接收两个参数。
		request :request是一个请求对象,可以拿到当前浏览器请求的一些信息。
			eg:请求路径,请求方法等
		response: response是一个响应对象,可以用来给请求发送响应。
	
	*/
	server.on('request',function(request,response){
		
		console.log('收到客户端发出的请求.......');
		console.log('当前请求路径:'+request.url);
		var url = request.url;
		if(url ==='/'){
			response.end('index page');
		}else if(url === '/login'){
			response.end('login page');
		}else if(url === '/index'){
			response.end('postlist page');
		}else{
			response.end('404 Not Fount');
		}
		
	});
	
	

6.通过设置响应头,实现HTML标签渲染

  • 在响应请求之前添加响应头。
  • 官方文档
response.writeHead(statusCode[, statusMessage][, headers])

statusCode <number>
statusMessage <string>
headers <Object>
发送一个响应头给请求。 状态码是一个三位数的 HTTP 状态码,如 404。 最后一个参数 headers 是响应头。 第二个参数 statusMessage 是可选的状态描述。
  • 代码片段:
server.on('request',function(request,response){
		
		console.log('收到客户端发出的请求.......');
		console.log('当前请求路径:'+request.url);
		var url = request.url;
		if(url ==='/'){
			//response.writeHead(响应状态码,响应头对象): 发送一个响应头给请求。
			response.writeHead(200,{'Content-Type':'text/html'})
			response.end('<p>index page</p>')
		}else if(url === '/login'){
			response.writeHead(200,{'Content-Type':'text/html'});
			response.end('login page');
		}else if(url === '/index'){
			response.writeHead(200,{'Content-Type':'text/html'});
			response.end('<strong>postlist page</strong>');
		}else{
			response.writeHead(200,{'Content-Type':'text/html'});
			response.end('<h1 style="color:red;">404 Not Fount</h1>');
		}
		
	});
	

猜你喜欢

转载自blog.csdn.net/qq_41307443/article/details/79828078