核心模块http
Node.js 中的 HTTP 接口旨在支持传统上难以使用的协议的许多功能。 特别是,大块的、可能块编码的消息。 接口永远不会缓冲整个请求或响应,用户能够流式传输数据。
简而言之:http服务是相当低层次的,我们可能要用到不同的模块来实现完整的Web服务器。主要用http模块的地方是实现供应用程序使用的后端Web服务;也就是http是帮你写服务器的。
http是帮你写服务器的
- 传统的动态网站开发需要用到应用软件
PHP需要php模块和Apache/wamp服务器等软件
JAVA:Tomcat 、Weblogic - Node.js不需要用到应用软件,只是一个环境,可以构建web服务器
创建一个web服务器
服务器server:接收来自客户端的请求,并将客户端请求的地址返回给客户端。
//1.加载http核心模块
var http =require('http');
//2.使用http.createServer() 创建一个web服务器
//返回一个server对象
var server = http.createServer();
//3.服务器:接收请求,处理请求,响应
server.on('request',function(req,res){
console.log('收到请求')//每次执行请求访问都会打印一次
res.write('url:');
res.end(req.url)
})
//4.绑定端口号,启动服务器(可以访问)
server.listen('3000',function(res){
console.log('服务器启动');
})
//5.服务器发送给客户端的
var client = http.get('localhost:3000', function(clientRes){
clientRes.pipe(process.stdout);
});
进一步解析上面的代码
- 要使用 HTTP 服务器和客户端,必须 require(‘http’)
- 四个实例
- server:服务器实例对象(http.Server实例)
- client:http.ClientReques实例,用来向服务端发起请求(启动、监控和处理来自服务器的响应)
- req对象是Class: http.IncomingMessage的实例对象,可用于访问响应状态、消息头、以及数据
- res对象是Class: http.ServerResponse(由 HTTP 服务器在内部创建)的实例对象
- 打印结果
HTTP模块的简单使用
const http = require('http');
http.createServer((req,res)=>{
// req.url可以获取URL中的路径(端口之后部分)
if(req.url.startsWith('/index')){
// write向客户端响应内容,可以写多次
res.write('hello');
res.write('hi');
res.write('nihao');
// end方法用来完成响应,只能执行一次
res.end();
}else if(req.url.indexOf('/about')===0){
res.end('about');
}else{
res.end('no content');
}
}).listen(3000,()=>{
console.log('running...');
});
// 监听3000端口号
运行开启服务器
打开浏览器,建立与服务器端口特定的链接
HTTP
- 为了支持所有可能的 HTTP 应用程序,Node.js 的 HTTP API 非常底层。 它仅进行流处理和消息解析。 它将消息解析为消息头和消息主体,但它不会解析具体的消息头或消息主体。
- HTTP是node的核心模块,入门容易,真正弄懂还需要深入理解服务器和客户端,它们的三次握手来结合。
- 文档
http://nodejs.cn/api/http.html#http_http