Node.js之HTTP服务

使用 Node 非常轻松的构建一个 Web 服务器
  • 在 Node 中专门提供了一个核心模块:http
  • http 这个模块的职责就是帮你创建编写服务器的
  1. 加载 http 核心模块,http是变量名称,可以自定义
var http = require('http')
  1. 使用 http.createServer() 方法创建一个 Web 服务器
    返回一个 Server 实例
var server = http.createServer()
  1. 服务器要干嘛?
  • 提供服务:对 数据的服务
  • 发请求
  • 接收请求
  • 处理请求
  • 给个反馈(发送响应)
  • 注册 request 请求事件

当客户端请求过来,就会自动触发服务器的 request 请求事件,然后执行第二个参数:回调处理函数

server.on('request', function () {
  console.log('收到客户端的请求了')
})
  1. 绑定端口号,启动服务器
server.listen(3000, function () {
  console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问')
})
  • 执行:
    Node.js之HTTP服务
  • 访问:http://127.0.0.1:3000/
    Node.js之HTTP服务
    每访问一次就会增加一次记录
HTTP的请求和响应
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/ 来进行访问')
})
  • 这里无论请求怎样的路径,返回的结果都是:hello nodejs
    Node.js之HTTP服务
    Node.js之HTTP服务
根据不同的请求路径发送不同的响应结果
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('服务器启动成功,可以访问了。。。')
})

Node.js之HTTP服务
Node.js之HTTP服务
Node.js之HTTP服务

上一篇:3000组装游戏电脑2021 2021年3000元游戏电脑最强组装


下一篇:python 函数 亲密数对