Node.js服务端02-内置http模块

90 阅读1分钟

内置http模块

创建服务器:

createServer( (req, res) =>{}).listen(端口号,()=>{})

let http = require('http')

//创建服务器

http.createServer((req, res) => {
  //req:接收浏览器的传的参数  请求
  console.log(req.url);
  //res:返回渲染内容  响应
  res.writeHead(200,{"Content-type":"text/html;charset=utf-8"}) //让write加载html页面,兼容更多浏览器
  res.write(renderHTML(req.url))
  res.end("['12,3']") //写完要结束 必须是JSON字符串
}).listen(3000, () => {
  console.log('start');
})

function renderHTML(url) {
  switch (url) {
    case '/abc':
      
      return `
      <html>
      <div>哈哈哈</div>
      </html>
      `
  
    default:
      return `
      <html>
      <div>没找到,你说气人不</div>
      </html>
      `
  }
}

练习

//renderHtml.js
function renderHTML(url) {
    switch (url) {
      case '/api':
        
        return '{a:[a,b,c]}'
      case '/ht':
        return `
        <html>
        <div>
        这是一个HTML页面
        </div>
        </html>
        `
      default:
        return '啥也没找到'
    }
}


module.exports = {
  renderHTML
}
//server.js
let renderHTML = require('./module/renderHtml')

let httpServer = require('http')

httpServer.createServer((req, res) => {
  res.writeHead(200,{"Content-type":"text/html;charset=utf-8"})
  res.write(renderHTML.renderHTML(req.url))
  res.end()
}).listen(3000, () => {
  console.log('服务已开启');
})

内置url模块

url.parse():解析url,转为对象,可处理路径和参数

let renderHTML = require('./module/renderHtml')

let httpServer = require('http')
let url = require('url')


httpServer.createServer((req, res) => {
  if (req.url === "/favicon.ico") {
    return
  }
  let urlObject = url.parse(req.url, true) //解析url成对象 第二个参数,解析参数JSON,变成对象
  console.log(urlObject);
  // url.format() 对象转为url
  
  
  let pathName = url.parse(req.url).pathname
  
  let query = urlObject.query
  console.log(query);

  res.writeHead(200,{"Content-type":"text/html;charset=utf-8"})
  res.write(renderHTML.renderHTML(pathName))
  res.end()
}).listen(3000, () => {
  console.log('服务已开启');
})