使用node搭建一个简单操作本地文件的服务器 偏执的太偏执、 2021-12-17 00:13 562阅读 0赞 # 使用node搭建一个简单服务器 # * 要使用node搭建一个服务器, 首先肯定是要去node官网 查看文档的,根据文档, 可以知道node有哪些功能。 * 下面是一个简单的node服务器,包含2个文件,启动的方式就是在node环境下 运行 ![在这里插入图片描述][20190706172620224.png] node app.js * 首先, 需要引入一些node模块组件 * http模块 * 文件模块 :fs * 路径模块: path * url模块: url * 接下来通过 `http.createServer()` 方法创建一个新的服务 let server = http.createServer() * 给server注册一个服务事件 server.on('request',(req, res) => { ...}) * **req**和**res**分别是请求request和响应response ### 获取get请求的参数 ### * 通过url模块可以解析的 URL 字符串 * `url.parse(data, Boolean)` 第一个值是url的path参数,第二个是如果设为 true,则url // 之后至下一个 / 之前的字符串会解析作为 host。 例如, //foo/bar 会解析为 \{host: ‘foo’, pathname: ‘/bar’\} 而不是 \{pathname: ‘//foo/bar’\}。 默认为 false。 var qu = url.parse(req.url, true).query // * 接下来通过`startsWith()`方法匹配url的pathname来判断请求的哪个接口 然后就可以进行对应的接口处理了 * 下面是完整的**app.js** 文件和 **data.json** 文件 * get请求的路径是: localhost:9999/add?urlString=测试 * post请求的路径是: localhost:9999/addPost (接收json数据,可以用postman测试) * 有兴趣的小伙伴可以试试哦 // 引入http模块 const http = require('http') const fs = require('fs') const path = require('path') const url = require('url') const querystring = require('querystring') // 创建一个服务 let server = http.createServer() // 运行服务器的方法 server.on('request', (req, res) => { var resData = [] // req: 请求 // res: 返回 if (req.method == 'GET') { // 获取get请求的参数 var qu = url.parse(req.url, true).query // add接口操作 if (req.url.startsWith('/add')) { // __dirname 表示当前文件路径 var dbPath = path.join(__dirname, 'data.json') // 读取本地的json文件 fs.readFile(dbPath,'utf8', (err, data) => { if (err) { return console.log('读取文件失败' , err) } // 读取json文件 然后转码 data = JSON.parse(data) // 将新内容添加到数组 data.push(qu.urlString) // 重新写入文件 fs.writeFile(dbPath, JSON.stringify(data), (err, data1) => { if (err) { console.log('文件写入失败') return } resDatas({ data: 'ok' }) }) }) } } if (req.method == 'POST') { console.log('这是POST请求!') // 处理post请求的参数 //1. 给req对象注册一个 data事件 // data事件当post请求发送参数的时候,就会触发data事件 // data事件会触发一次或者多次 ,把每次触发data事件的数据拼起来即可 let result = '' req.on('data', function(chunk){ console.log('触发了一个data事件') result += chunk }) //2. 给req注册一个end事件 // 当所有的请求参数都发送完成了, end事件就会触发 req.on('end', function(){ console.log('post请求完成了') // 处理result这个字符串 let obj = querystring.parse(result) console.log(obj) }) resDatas({ data: '接收到数据了' }) } // 封装的返回函数 function resDatas(data) { res.setHeader('content-type', 'json') // 所有的请求都通过end函数将函数的参数返回给请求 // 注意 end 函数返回值只能是一个字符串。不能是复杂数据类型 res.end(JSON.stringify(data)) } }) // 监听服务器状态 server.listen(9999, () => { console.log('服务器启动了,访问 http://localhost:9999/') }) ["测试","测试1","测试2","新的添加","新的添加"] [20190706172620224.png]: /images/20211214/9a459515f5d54de9b9440f00b0d8bda2.png
还没有评论,来说两句吧...