我们知道传统的HTTP服务器是由Aphche、Nginx、IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,用于搭建 HTTP 服务端和客户端
http模块中提供了四个类和一些方法,这里只叙述这四个类和部分方法的详解
var http = require('http');
http.Server类是用来创建服务器的。包含的事件和属性如下:
var http = require("http");
var server = new http.Server();
server.on('request',function(req,res){
res.writeHead(200,"success",{
"Content-Type":"text/plain"
});
res.write("hello nodejs","utf8");
res.end();
})
server.on('connection',function(){
console.log('hello node!');
});
server.on('close',function(){
console.log('server will close');
});
server.listen(3000);
在上述案例中,我们创建了一个简单的服务器,利用request事件监听请求信息,request事件的监听器接收两个参数。
其中req为请求内容,res为响应内容。两个参数分别是http.IncomingMessage类(它实现了可读流的接口)和http.ServerResponse类(它实现了可写流的接口)的实例
在http模块提供了一个创建服务器的封装的方法http.createServer()。
const http = require('http');
const server = http.createServer(function(req,res) {
}).listen(3000);
http.createServer()方法创建的时候自动给request事件绑定了监听器,监听器的内容是一样的。
http.ServerResponse类是在服务器内部创建的,用于生成服务端响应信息res,并作为第二个参数传递到request事件的监听器中。包含的事件和属性如下:
从上列讲述的方法和属性可以看出,ServerResponse 基本只有三个作用:返回响应头、响应内容以及结束请求
const http = require('http');
const server = http.createServer(function(req,res) {
res.writeHead(200,"success",{
"Content-Type":"text/plain"
});
res.write("hello nodejs","utf8");
res.end();
}).listen(3000);
writeHead()方法写入响应头或使用隐式响应头模式,write()向请求体中写入响应信息。每次响应信息完成后都要调用end()方法,该方法会通知服务器,所有响应头和响应主体都已被发送,即服务器将其视为响应已完成
HTTP Expect: 100-continue:见 详细解释. ↩︎