node.js构建一个简单的web服务器

一、一个没有灵魂的web服务器

在Node中专门提供了一个核心模块:http
http这个模块的职责就是帮我们创建编写服务器的

1、加载http核心模块
2、使用http.createServer()方法创建一个Web服务器
返回一个Server实例
3、服务器要干嘛?
提供服务:对数据的服务
发请求
接收请求
处理请求
给个反馈(发送响应)
注册request请求事件
当客户端请求过来,就会自动触发服务器的request请求事件,然后执行第二个参数:回调处理函数
4、绑定端口号,启动服务器

demo1.js

//第一步
var http = require('http')
//第二步
var server = http.createServer()
//第三步
server.on('request', function () {
  console.log('收到客户端的请求了')
})
//第四步
server.listen(3000, function () {
  console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问')
})

然后再cmd下打开改js文件所在的路径
输入node demo.js
在这里插入图片描述

二、一个傻傻的web服务器

demo1.js

var http = require('http')

var server = http.createServer()

// request 请求事件处理函数,需要接收两个参数:
//    Request 请求对象
//        请求对象可以用来获取客户端的一些请求信息,例如请求路径
//    Response 响应对象
//        响应对象可以用来给客户端发送响应消息
server.on('request', function (request, response) {
  // http://127.0.0.1:3000/ /
  // http://127.0.0.1:3000/a /a
  // http://127.0.0.1:3000/foo/b /foo/b
  console.log('收到客户端的请求了,请求路径是:' + request.url)

  // response 对象有一个方法:write 可以用来给客户端发送响应数据
  // write 可以使用多次,但是最后一定要使用 end 来结束响应,否则客户端会一直等待
  response.write('hello')
  response.write(' nodejs')

  // 告诉客户端,我的话说完了,你可以呈递给用户了
  response.end()

  // 由于现在我们的服务器的能力还非常的弱,无论是什么请求,都只能响应 hello nodejs
  // 思考:
  //  我希望当请求不同的路径的时候响应不同的结果
  //  例如:
  //  / index
  //  /login 登陆
  //  /register 注册
  //  /haha 哈哈哈
})

server.listen(3000, function () {
  console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问')
})

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、一个简单的web服务器

demo2.js

var http = require('http')

// 1. 创建 Server
var server = http.createServer()

// 2. 监听 request 请求事件,设置请求处理函数
server.on('request', function (req, res) {
  console.log('收到请求了,请求路径是:' + req.url)
  console.log('请求我的客户端的地址是:', req.socket.remoteAddress, req.socket.remotePort)

  // res.write('hello')
  // res.write(' world')
  // res.end()

  // 上面的方式比较麻烦,推荐使用更简单的方式,直接 end 的同时发送响应数据
  // res.end('hello nodejs')

  // 根据不同的请求路径发送不同的响应结果
  // 1. 获取请求路径
  //    req.url 获取到的是端口号之后的那一部分路径
  //    也就是说所有的 url 都是以 / 开头的
  // 2. 判断路径处理响应

  var url = req.url

  if (url === '/') {
    res.end('index page')
  } else if (url === '/login') {
    res.end('login page')
  } else if (url === '/products') {
    var products = [{
        name: '苹果 X',
        price: 8888
      },
      {
        name: '菠萝 X',
        price: 5000
      },
      {
        name: '小辣椒 X',
        price: 1999
      }
    ]

    // 响应内容只能是二进制数据或者字符串
    //  数字
    //  对象
    //  数组
    //  布尔值
    res.end(JSON.stringify(products))
  } else {
    res.end('404 Not Found.')
  }
})

// 3. 绑定端口号,启动服务
server.listen(3000, function () {
  console.log('服务器启动成功,可以访问了。。。')
})

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dayexiaofan/article/details/86572399