//http模块
// ⭐⭐⭐通过nodejs创建web请求的流程
// 1. 加载http模块
// 2. 使用http.createServer()方法创建web服务器,并用变量接受一个实例
// 3. 请求的处理: 接收请求 处理请求 发送响应,用实例调用on函数,on()的作用是给request绑定响应函数
// 接收请求:on的第一个参数是request,第二个参数是响应函数
// 响应函数有两个参数:请求对象req 和 响应对象res
// req有对象url ,能获取当前请求的url,请求的是从端口号之后开始路径
// res参数是一个对象,能通过 ⭐write() 给客户端发送响应数据
// res.write() 能使用多次,最后要用 res.end() 结束响应,让客户端结束等待
// 根据具体情况 也可以把发送个客户端的消息作为end的参数,直接发送给客户同时结束客户端的等待状态
// ⭐⭐⭐write()和end()都是res的对象
// 4. 绑定端口 启动服务器,使用实例调用listen(端口号,function(){ })
// ⭐⭐⭐on的响应函数是进行的处理,listen的响应函数是服务器请求成功后立刻进行的处理操作
// listen只要监听到客户端进行了请求,就会调用响应函数
// 5. ⭐向客户端发送响应消息的解析码:utf-8 gbk html ...不同类型的消息
// 使用 res.setHeader('Content-Type','text/plain;charset=utf-8')
// 设置响应消息的 内容类型Content-Type, 解析格式text/plain;charset=utf-8
// text/plain 表示普通文本,用utf-8解析
// text/html 表示用html解析文本为html代码
//http.createServer()
var http = require('http')
//创建服务器实例
var serve = http.createServer()
// serve.on 给request事件绑定函数function
//服务器收到请求之后 触发request事件 ,执行第二个参数:事件处理函数
//事件处理函数有两个参数 :
//request 请求对象 :用来获取在浏览器中请求的url,比如路径...
//response 响应对象 :给客户端发送消息
//response对象有 write方法 用于给客户端发送消息,能将数据通过后台展示到页面,它可以使用多次
//最后一定要用 .end方法 结束客户端的等待,response.end()
// 当代码修改了,需要重启服务器,新的代码才能生效
serve.on('request',function(request ,response){
//function的参数request 参数是一个对象 它有属性:url,用来获取路径信息
console.log("收到客户端的请示路径:" + request.url)
// if(request.url )
// ⭐在后台中,url(统一资源定位符),就能控制:访问不同路径 得到不同资源
// 所有的请求都是从 / 开始, root地址/目标位置 如: www.baodu.com/login/...
// 所以 上面的请求中 无论请求地址是什么 都会展示 write中的内容,因为没有限定这句话是在请求哪个url后才展示到页面
// 没有给write外面添加访问url的限定条件 结合equest.url做判断就行
// 实现方式:1获取请求路径 2判断路径并处理响应
var url = request.url // 能获取url中端口号之后字符串
// if(url === '/')// 表示首页,因为root页面就是以/ 作为结尾
// response.end('这是首页')
// else if(url === '/login')
// response.end('这是登录页')
// else
// response.end('not found')
response.setHeader('Content-Type','text/html;charset=utf-8');
response.end("this is message from web server
");
})
//绑定端口号,启动服务器
// 关于绑定的端口号问题
serve.listen(3000,function(){
// 127.0.0.1就是本机ip
console.log("服务器启动成功,可以使用http://127.0.0.1:3000/ 来访问")
})
//创建服务器实例>绑定端口 启动服务器> 服务器收到请求 执行功能
//代码的执行流程和书写流程 可能不一样