使用node搭建一个简单操作本地文件的服务器

使用node搭建一个简单服务器

  • 要使用node搭建一个服务器, 首先肯定是要去node官网 查看文档的,根据文档, 可以知道node有哪些功能。
  • 下面是一个简单的node服务器,包含2个文件,启动的方式就是在node环境下 运行

在这里插入图片描述

   node app.js
  • 首先, 需要引入一些node模块组件

    • http模块
    • 文件模块 :fs
    • 路径模块: path
    • url模块: url
  • 接下来通过 http.createServer() 方法创建一个新的服务

let server = http.createServer()
  • 给server注册一个服务事件
server.on('request',(req, res) => {...})
  • reqres分别是请求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","新的添加","新的添加"]

猜你喜欢

转载自blog.csdn.net/weixin_45289067/article/details/94873820