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>'); } });