mirror of
https://github.com/microsoft/frontend-bootcamp.git
synced 2026-01-26 14:56:42 +08:00
65 lines
1.2 KiB
JavaScript
65 lines
1.2 KiB
JavaScript
// @ts-check
|
|
const fs = require('fs');
|
|
const express = require('express');
|
|
const bodyParser = require('body-parser');
|
|
const cors = require('cors');
|
|
const app = express();
|
|
|
|
const store = {
|
|
/** @type {any} */
|
|
read() {
|
|
if (fs.existsSync('tmp.json')) {
|
|
store.todos = JSON.parse(fs.readFileSync('tmp.json').toString());
|
|
} else {
|
|
store.todos = {};
|
|
}
|
|
|
|
return store.todos;
|
|
},
|
|
|
|
save() {
|
|
fs.writeFileSync('tmp.json', JSON.stringify(store.todos));
|
|
},
|
|
|
|
todos: {}
|
|
};
|
|
|
|
app.use(bodyParser.json());
|
|
app.use(cors());
|
|
|
|
app.get('/todos', (req, res) => {
|
|
res.json(store.read());
|
|
});
|
|
|
|
app.put('/todos/:id', (req, res) => {
|
|
store.todos[req.params.id] = req.body;
|
|
store.save();
|
|
res.json('ok');
|
|
});
|
|
|
|
app.post('/todos/:id', (req, res) => {
|
|
store.todos[req.params.id] = req.body;
|
|
store.save();
|
|
res.json('ok');
|
|
});
|
|
|
|
app.delete('/todos/:id', (req, res) => {
|
|
delete store.todos[req.params.id];
|
|
store.save();
|
|
res.json('ok');
|
|
});
|
|
|
|
app.post('/todos', (req, res) => {
|
|
store.todos = req.body;
|
|
store.save();
|
|
res.json('ok');
|
|
});
|
|
|
|
app.get('/hello', (req, res) => {
|
|
res.send('world');
|
|
});
|
|
|
|
app.listen(process.env.NODE_ENV === 'production' ? undefined : 3000, () => {
|
|
console.log('Listening at http://localhost:3000');
|
|
});
|