首先我们来了解一下当用户浏览一个网页的简单动作,内部的具体过程:
1)用户通过浏览器发送一个http请求到指定的主机
2)服务器接收到该请求,对该请求进行分析和处理
3)服务器处理完成以后,返回对应的数据到用户机器
4)浏览器接受服务器返回的数据,并根据接收到的进行分析和处理。
即由客户端发送一个http请求到指定的服务器->服务器接受并处理请求->返回数据
用node来实现http服务器最基本的有一下几步:
1:用require引入http模块;
2:调用http的createServer方法,就创建了一个server对象
createServer方法 有一个回调函数,作用:当有请求发给服务器的时候,这个回调函数就会被执行
该回调函数有两个参数:
(1) 参数request为浏览器发送过来的数据,
(2) 参数response为服务器对浏览器的请求进行的响应。
上面的两个参数也提供了一些方法,我列举一些常用的:
(1)参数request对象:
httpVertion:使用http的版本
header:请求头信息的数据
url:请求的地址
method:请求的方法
(2)参数response对象:
response.write(chunk[, encoding][, callback]) :发送一个数据块到响应正文中
response.end([data][, encoding][, callback]) :当所有的正文和头信息发送完成之后,调用该方法告诉服务器数据已经全部发送完成了,这个方法在每 次完成信息发送之后以后必须调用,并且是最后调用
response.end([data][, encoding][, callback]) :该属性用来设置返回的状态码
response.writeHead(statusCode[, statusMessage][, headers])这个方法只能在当前请求使用一次,并且要在end()方法之前。
response.setHeader(name, value):设置返回头信息
3:用listen方法监听端口,8080.端口代表了在服务器硬件或者系统中的运行的一个程序。
localhost(80)。80是http的默认端口。
浏览器中访问的url:localhost:8080
下面用案例来看下是如何实现:
在webstrom中运行之后,在浏览器中输入localhost:8080,方为结果如下:
除了在response.end()方法里面写入返回浏览器的数据,也可以在调用response.end()方法前调用response.write()方法来写入数据。
当然response.end()方法里面也可以写入一些复杂的javaScript的语句来进行页面的执行。但是如果浏览器请求的内容很多的时候,全部都写入该方法中,就不太靠谱了,那我们应该如何实现呢?详情看下篇文章讲解。