搭建一个简单的nodejs服务

153 阅读2分钟

写这篇是因为前面学的又快忘了,写完相当又捋了一遍,逻辑更清晰了

  • 首先实现一个精简版

  1. 创建一个文件夹service

  2. 打开文件夹目录下执行 npm init -y,对node项目初始化配置
    image.png
    文件夹下自动生成一个package.js文件
    image.png ~ 准备工作完成 ~

  3. 创建启动目录 /bin/index.js
    image.png
    这里监听了端口 5001,可自行设置未被使用的端口号
    服务器收到请求即返回一个字符串 message,作为测试使用

  4. 执行 node bin/index.js,即可启动服务
    image.png
    可以看到终端打印了 connect success ,表示服务已经启动成功~
    image.png

  5. 浏览器打开 http://localhost:5001/,即向服务器发起一条请求
    image.png
    页面显示了返回的数据 message,一个简单的请求已经完成

  • 其次实现一个简单业务逻辑

  1. 为了方便调试,安装nodemon实现代码热更新
    image.png
    webpack修改配置
    image.png
    执行npm run dev,使用nodemon启动服务,修改代码之后就可以实时更新服务了

  2. 创建业务逻辑文件夹,把请求移到业务文件中
    image.png
    启动服务改为引用该文件

    const httpServer = require('../src/httpServer')
    const server = http.createServer(httpServer)
    
  3. req为向服务器发起的请求内容
    res为服务器返回的内容,通过判断req请求,res.end()返回具体的业务数据
    image.png
    这里简单的发起了一个 api/getData的GET请求
    image.png 浏览器打开http://localhost:5001/api/getData调试

  • 最后优化一下业务逻辑的处理

  1. 区分get请求和post请求

    // 接收post请求发过来的数据
    req.on('data',(chunk)=>{})
    req.on('end',()=>{})
    
  2. 业务逻辑按模块单独封装

  3. 封装返回数据的模型

补充一下,因为实际项目应用中还有跨域的问题,服务端返回要设置请求头

//设置数据格式
res.setHeader('Content-Type', 'application/json') 
// 设置允许跨域的源
res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
// 设置cookie允许跨域
res.setHeader("Access-Control-Allow-Credentials", true);
// 设置可以跨域的请求方法
res.setHeader("Access-Control-Request-Method", "PUT,POST,GET,DELETE,OPTIONS");

然后就可以直接在项目请求localhost:5001/xxx