const express = require('express'),
config = require('./config'),
bodyParser = require("body-parser"),
app = express();
const fsPromise = require("./lib/myFs")
const { responseInfo } = require("./lib/utils")
app.listen(config.port, _ => {
console.log(`SERVER IS CREATE => ${config.port}`);
});
app.use(bodyParser.urlencoded({
extended: false
}))
app.use(async (req, res, next) => {
req.USER_DATA = await fsPromise.readFile('./mock/user.json');
req.USER_DATA = JSON.parse(req.USER_DATA)
next()
});
app.get('/api/list', (req, res) => {
let { limit = 10, page = 1 } = req.query
page = parseInt(page)
limit = parseInt(limit)
let total = req.USER_DATA.length,
pages = Math.ceil(total / limit),
data = [];
for (let i = (page - 1) * limit; i < page * limit; i++) {
let item = req.USER_DATA[i];
if (!item) {
break;
}
data.push(item);
}
if (data.length === 0) {
responseInfo(res, {
code: 1,
codeText: "没有匹配数据!"
})
return
}
responseInfo(res, {
page,
limit,
pages,
total,
data
})
});
app.post('/api/add', (req, res) => {
let { name = "", phone = "" } = req.body
req.req.USER_DATA.push({
id: req.USER_DATA.length === 0 ? 1 : parseInt(req.USER_DATA
[req.USER_DATA.length - 1]['id']) + 1,
name,
phone
});
fsPromise.writeFile('./mock/user.json', req.USER_DATA).then(_ => {
responseInfo(res)
}).catch(_ => {
responseInfo(res, {
code: 1,
codeText: "增加失败!"
})
});
});
app.use(express.static('./static'));
app.use((req, res) => {
res.status(404).send({
code: 1,
codeText: 'not found!'
});
});
function responseInfo(res, options) {
let config = Object.assign({
code: 0,
codeText: 'OK!'
}, options);
res.status(200).type('application/json').send(config);
}
module.exports = {
responseInfo
};
const fs = require('fs'),
path = require('path');
function readFile(pathname, encoding = 'utf8') {
return new Promise((resolve, reject) => {
pathname = path.resolve(pathname);
fs.readFile(pathname, encoding, (err, result) => {
if (err) {
reject(err);
return;
}
resolve(result);
});
});
}
function writeFile(pathname, data, encoding = 'utf8') {
return new Promise((resolve, reject) => {
if (typeof data !== "string") {
data = JSON.stringify(data);
}
pathname = path.resolve(pathname);
fs.writeFile(pathname, data, encoding, err => {
if (err) {
reject(err);
return;
}
resolve();
});
});
}
module.exports = {
readFile,
writeFile
};