写这篇是因为前面学的又快忘了,写完相当又捋了一遍,逻辑更清晰了
-
首先实现一个精简版
-
创建一个文件夹service
-
打开文件夹目录下执行
npm init -y,对node项目初始化配置
文件夹下自动生成一个package.js文件
~ 准备工作完成 ~
-
创建启动目录 /bin/index.js
这里监听了端口5001,可自行设置未被使用的端口号
服务器收到请求即返回一个字符串message,作为测试使用 -
执行
node bin/index.js,即可启动服务
可以看到终端打印了connect success,表示服务已经启动成功~
-
浏览器打开
http://localhost:5001/,即向服务器发起一条请求
页面显示了返回的数据message,一个简单的请求已经完成
-
其次实现一个简单业务逻辑
-
为了方便调试,安装nodemon实现代码热更新
webpack修改配置
执行npm run dev,使用nodemon启动服务,修改代码之后就可以实时更新服务了 -
创建业务逻辑文件夹,把请求移到业务文件中
启动服务改为引用该文件const httpServer = require('../src/httpServer') const server = http.createServer(httpServer) -
req为向服务器发起的请求内容
res为服务器返回的内容,通过判断req请求,res.end()返回具体的业务数据
这里简单的发起了一个api/getData的GET请求
浏览器打开
http://localhost:5001/api/getData调试
-
最后优化一下业务逻辑的处理
-
区分get请求和post请求
// 接收post请求发过来的数据 req.on('data',(chunk)=>{}) req.on('end',()=>{}) -
业务逻辑按模块单独封装
-
封装返回数据的模型
补充一下,因为实际项目应用中还有跨域的问题,服务端返回要设置请求头
//设置数据格式 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了