本文实现用nodejs搭建一个简单的服务端,用json文件模拟数据库,适合前端在模拟数据测试的时候使用
必备
- node环境
- express插件
- body-parse 插件
- fs插件
目录结构
文件内容
-
nodeService.js
const express = require('express')
const bodyParser = require('body-parser')
const fs = require('fs')
function readText (pathname) {
var bin = fs.readFileSync(pathname)
if (bin[0] === 0xEF && bin[1] === 0xBB && bin[2] === 0xBF) {
bin = bin.slice(3)
}
return bin.toString('utf-8')
}
// 创建express实例
const app = express()
// 设置跨域访问
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*')
res.header('Access-Control-Allow-Headers', 'X-Requested-With, accept, origin, content-type')
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
res.header('X-Powered-By', ' 3.2.1')
res.header('Content-Type', 'application/json;charset=utf-8')
next()
})
// 将请求体变成熟悉的键值对样子
app.use(bodyParser.uselencoded({extended: false}))
app.user(bodyParser.json())
// 开始写接口
// 例:接口为/client/任意参数, 就爱那个数据插入database的clients.json中
app.route('/client/:id')
.put((req, res) => {
let options = req.body
let id = req.params[0]
let allClient = readText('./database/clients.json')
let t = JSON.parse(allClient)
for (let i in t) {
if (JSON.parse(t[i]).id === id) {
t[i] = JSON.stringify(options)
fs.writeFileSync('./database/clients.json', JSON.stringify(t))
let response = {
msg: 'success',
clients: t[i]
}
res.status(200)
res.send(response)
return
}
}
res.status(500)
res.send({msg: 'failed'})
})
// 开启服务器
const server = app.listen(3000, function() {
var host = server.address().address
var port = server.address().port
console.log('Example app listening at http://%s:%s', host, port)
})
-
fileDetail.json
[]
运行方式
在该目录下
node nodeService.js
请求方式
$.ajax({
url: 'localhost:3000/client/' + n //n为任意参数,服务端通过req.params.id获取
type: 'put'
}).then((res) => {
console.log(res)
}).catch((err) => {
console.log(err)
})