首页 > 其他 > nodejs搭建服务器

nodejs搭建服务器

nodejs开始揭开后端语言神秘面纱

const http = require('http')
const fs = require('fs')
const server = http.createServer((request, response) => {
  // console.log(getPrototypeChain(request))
  // console.log('this is a request');
  // console.log(getPrototypeChain(response))
  // response.end('Hello 666')
  // 通过以上打印信息可以了解到request和response都是Stream流
  const {url, method, headers} = request
  if (url === '/' && method === 'GET') {
    // html模板请求
    fs.readFile('index.html', (err, data) => {
      if (err) {
        response.writeHead(500, {
          'Content-Type': 'text/plain;charset=utf-8'
        })
        response.end('500服务器繁忙')
        return
      }
      response.statusCode = 200
      response.setHeader('Content-Type', 'text/html')
      response.end(data)
    })
  } else if(url === '/users' && method === 'GET') {
    // json数据接口请求
    response.writeHead(200, {
      'Content-Type': 'application/json'
    })
    response.end(JSON.stringify([{name: 'tom'}]))
  } else if(method === 'GET' && headers.accept.indexOf('image/*') != -1) {
    // 图片请求
    // fs.createReadStream创建导管的一端,response作为导管的另外一端,pipe将导管两端连接起来。
    fs.createReadStream('.' + url).pipe(response)
  } else {
    // 404请求
      response.statusCode = 404
      response.setHeader('Content-Type', 'text/plain;charset=utf-8')
      response.end('404页面不存在')
  }
})

function getPrototypeChain(obj) {
  const protoChain = []
  while(obj = Object.getPrototypeOf(obj)) {
    protoChain.push(obj)
  }
  return protoChain;
}
server.listen(3000, () => {
  console.log('Server is start at 3000');
})

评论区

粤ICP备15040393号-1