• 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/ 来进行访问')
    })
    
    • 执行:
      在这里插入图片描述
    • 访问:http://127.0.0.1:3000/
      在这里插入图片描述
      每访问一次就会增加一次记录

    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
      在这里插入图片描述
      在这里插入图片描述

    根据不同的请求路径发送不同的响应结果

    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('服务器启动成功,可以访问了。。。')
    })
    

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

    本文来自博客园,作者:兮动人,转载请注明原文链接:https://www.cnblogs.com/xdr630/p/15254835.html

  • 相关阅读:
    Dotnet全平台下APM-Trace探索
    既生瑜何生亮?ASP.NET MVC VS ASP.NET Web API
    Dapper.NET——轻量ORM
    什么?字符串为空?
    Vue模板语法
    邂逅Vue.js
    Zookeeper是什么&怎么用
    虚拟机间实现免密登录
    十大排序算法最详细讲解
    JS将数字格式化成金融数字样式(千位分隔符,三位一个逗号间隔)
  • 原文地址:https://www.cnblogs.com/xdr630/p/15254835.html
Copyright © 2020-2023  润新知