Node-邂逅http模块

·  阅读 183
Node-邂逅http模块

路径分发

这个我都会在代码中进行讲解,直接看代码吧

我们先来看看req对象

let http = require('http');

let server = http.createServer();

server.on('request', (req, res) => {
  // req对象其实就是http.IncomingMessag类的实例
  // 这个类中有个message.url属性
  // 通过这个属性就可以获取到用户请求的路径
  res.writeHead(200, {
    "Content-Type": "text/plain;charset=utf-8"
  })
  res.end('仙蒂');
  console.log(req.url);
})
server.listen(666);

复制代码

拿到路径,是不是可以判断一下这个路径是什么,然后返回到对应的路径就可以了

let http = require('http');

let server = http.createServer();

server.on('request', (req, res) => {
  // req对象其实就是http.IncomingMessag类的实例
  // 这个类中有个message.url属性
  // 通过这个属性就可以获取到用户请求的路径
  // 来打印看看能不能拿到
  res.writeHead(200, {
    "Content-Type": "text/plain;charset=utf-8"
  })
  // startsWith: 用于检查字符串是否是以指定子字符串开头
  if (req.url.startsWith('/index')) {
    res.end('我是首页界面');
  } else if (req.url.startsWith('/login')) {
    res.end('我是登录界面');
  } else {
    res.end('没有数据');
  }
})
server.listen(666);
复制代码

紧接着来看看res对象

res对象其实就是http.ServerResponse 类的实例

http.ServerResponse类中也也有write方法和res对象大致一样

还是有一点区别

区别: 如果通过end方法返回数据,只会返回一次

let http = require('http');

let server = http.createServer();

server.on('request', (req, res) => {
  res.writeHead(200, {
    "Content-Type": "text/plain;charset=utf-8"
  })
  if (req.url.startsWith('/index')) {
    res.end('我是首页界面1');
    res.end('我是首页界面2');
  } else if (req.url.startsWith('/login')) {
    res.end('我是登录界面');
  } else {
    res.end('没有数据');
  }
})
server.listen(666);
复制代码

那试试write行不行

let http = require('http');

let server = http.createServer();

server.on('request', (req, res) => {
  res.writeHead(200, {
    "Content-Type": "text/plain;charset=utf-8"
  })
  if (req.url.startsWith('/index')) {
    res.write('我是首页界面1');
    res.write('我是首页界面2');
  } else if (req.url.startsWith('/login')) {
    res.end('我是登录界面');
  } else {
    res.end('没有数据');
  }
})
server.listen(666);
复制代码

诶?网页是不是一直在转?无法响应

为什么?

因为write只能返回数据,end是不是既可以结束请求又可以返回数据

如果返回多次数据,是不是在后面加上end方法就可以了

let http = require('http');

let server = http.createServer();

server.on('request', (req, res) => {
  res.writeHead(200, {
    "Content-Type": "text/plain;charset=utf-8"
  })
  if (req.url.startsWith('/index')) {
    res.write('我是首页界面1');
    res.write('我是首页界面2');
    res.end();
  } else if (req.url.startsWith('/login')) {
    res.end('我是登录界面');
  } else {
    res.end('没有数据');
  }
})
server.listen(666);
复制代码

是不是就没有任何的问题

分类:
前端
标签: