美文网首页
Node.js 服务器根据不同的请求做出不同的响应

Node.js 服务器根据不同的请求做出不同的响应

作者: 并亲了你一下嘀嗒嘀 | 来源:发表于2018-09-28 18:02 被阅读0次

上一次讲到了怎么解决 HTML 显示乱码的问题。

这是上次内容的链接:Node.js 服务器编码问题

今天我们添加一个新功能,可以根据不同的链接地址返回不同的页面响应。

启动上次的代码,代码如下:

// 创建一个简单的的 http 服务器程序

// 加载 http 模块
var http = require('http');

// 创建 http 服务对象
var server = http.createServer();

// 监听用户请求事件( request 事件)
// request 对象包含了用户请求报文中的所有内容 ,通过 request 对象可以获取所有用户提交过来后的数据
// response 对象用来向用户响应一些数据,当服务器要向客户端响应数据的时候必须使用 response 对象
server.on('request', function (request, response) {

  // 设置 response 返回数据类型与编码格式,否则浏览器会报错
  // Content-Type 设置数据类型
  response.setHeader('Content-Type', 'text/plain; charset=utf-8');
  // 向客户端(浏览器)返回数据
  response.write('Hello Word,你好!');
  // 返回数据的时候要结束,不然就会一直请求
  response.end();
})

// 启动服务
server.listen(8080, function () {
  console.log('OK,访问:localhost:8080');
})

会发现,无论在链接后面添加什么参数,页面也总是只显示 Hello Word,你好!

怎样才能实现修改地址访问不同的页面呢?在监听用户请求事件中,我们有一个参数 request

// 监听用户请求事件( request 事件)
// request 对象包含了用户请求报文中的所有内容 ,通过 request 对象可以获取所有用户提交过来后的数据
// response 对象用来向用户响应一些数据,当服务器要向客户端响应数据的时候必须使用 response 对象
server.on('request', function (request, response) {
    ...
})

就是上面代码中的第一个参数,它有一个特别的方法可以得到我们输入浏览器中的地址 --- request.url 。可以通过判断地址的不同设置不同的结果。

我们先把监听用户请求事件里面的代码全部删掉,写上新的代码,如下:

server.on('request', function (request, response) {

  // 设置 response 返回数据类型与编码格式,否则浏览器会报错
  // Content-Type 设置数据类型
  response.setHeader('Content-Type', 'text/plain; charset=utf-8');

  // 如果链接的路径是 / 或者 /index 时,返回的页面的 index 页面
  if (request.url === '/' || request.url === '/index') {
    // response.write('这是 index 页面');
    // response.end();
    // response.end('这是 index 页面'); 上面两句的简写
    response.end('这是 index 页面');
  } 
  // 如果链接的路径是 /login 时,返回的页面的 login 页面
  else if (request.url === '/login') {
    response.end('这是 login 页面');
  } 
  // 如果链接的路径是 /register 时,返回的页面的 register 页面
  else if (request.url === '/register') {
    response.end('这是 register 页面');
  } 
   // 如果链接的路径都不是上面定义的路径,返回 404 没有此页面
  else {
    response.end('404,没有找到此页面。');
  }
  
})

这样我们就可以通过不同的路径访问不同的页面了。

当我们访问 localhost:8080/localhost:8080/index 的时候,是这样的:

访问 localhost:8080/login 就会返回 login 页面:

这是 register 页面:

没有找到对应的页面,就会返回我们刚刚设置好的 404 页面:

相关文章

网友评论

      本文标题:Node.js 服务器根据不同的请求做出不同的响应

      本文链接:https://www.haomeiwen.com/subject/iyipoftx.html