学习Node.js- 【1】搭建开发环境

2020-08-18  本文已影响0人  zzyo96

一、nodejs一个简单实例

image.png

二、nodejs处理get请求

get请求,通过querystring来传递数据,如a.html?a=100&b=200 。 浏览器直接访问, 就发送get请求

image.png

三、处理post请求

image.png

——————————————————————————

搭建开发环境

————————————————————

项目搭建主要流程从0到1(个人总结)

代码地址:https://github.com/zzyo96/node_blog

image.png
const querystring = require('querystring');
const handleBlogRouter = require('./src/router/blog.js')
const handleUserRouter = require('./src/router/user.js')

//用于处理 post data
const getPostData = (req)=>{
  return new Promise((resolve,reject)=>{
    if(req.method !== 'POST'){
      resolve({})
      return
    }
    if(req.headers['content-type']!=='application/json'){
      resolve({})
      return
    }
    let postData = ''
    req.on('data',chunk =>{
      postData += chunk.toString();
    })
    req.on('end',()=>{
      if(!postData){
        resolve({})
        return
      }
      resolve(
        JSON.parse(postData)
      )
    })
  })
};

const serverHandle = (req,res) =>{
//  设置返回格式JSON
  res.setHeader('Content-type','application/json')

//  获取path
  const url = req.url;
  req.path = url.split('?')[0]

//  解析query
  req.query = querystring.parse(url.split('?')[1])

//  处理post data
  getPostData(req).then(postData=>{
    req.body = postData;

    //  处理blog路由
    const blogData = handleBlogRouter(req,res)
    if(blogData){
      res.end(
        JSON.stringify(blogData)
      );
      return
    }

//  处理user路由
  const userData = handleUserRouter(req,res);
  if(userData){
    res.end(
      JSON.stringify(userData)
    );
    return
  }

//  未命中路由,返回404
    res.writeHead(404,{"Content-type":"text/plain"});
    res.write("404 Not Found\n");
    res.end();
  })
};

module.exports = serverHandle
image.png image.png
class BaseModel{
  constructor(data,message){
    if(typeof data === 'string'){
      this.message = data
      data = null
      message =null
    }
    if(data){
      this.data = data
    }
    if(message){
      this.message = message
    }
  }
}

class SuccessModel extends BaseModel{
  constructor(data,message){
    super(data,message)
    this.errno = 0
  }
}

class ErrorModel extends BaseModel{
  constructor (data,message){
    super(data, message);
    this.errno = -1
  }
}

module.exports = {
  SuccessModel,
  ErrorModel
};
image.png
完成, 运行的时候 执行 node ./bin/www.js 即可
上一篇 下一篇

猜你喜欢

热点阅读