安装
npm install express
创建Express APP
app.js:
const express = require('express');
const app = express();
app.listen(3000);
app.get('/', (req, res) => {
res.send('<h2>Home</h2>');
})
app.get('/help', (req, res) => {
res.sendFile('./views/help.html', { root: __dirname });
})
运行:
nodemon app
重定向
app.get('/helppage', (req, res) => {
res.redirect('/help');
});
404页面
// 下面代码放在app.js的最后
app.use((req, res) => {
res.status(404).sendFile('./views/404.html', { root: __dirname });
});
路由参数
app.get('/students/:id', (req, res) => {
console.log(req.params.id);
Student.findById(req.params.id)
.then(result => {
res.render('details', { student: result})
})
.catch(err => {
console.log(err);
})
});
不同的HTTP请求类型
POST
需要使用一个中间件来解析request对象:
app.use(express.urlencoded({ extended: true}));
// ...
// 监测/students路径的POST请求
app.post('/students', (req, res) => {
// 注意,在此之前需要创建相应的Schema/Model
const student = new Student(req.body);
student.save()
.then(result => {
res.redirect('/studentlist');
})
.catch(err => {
console.log(err);
})
})
DELETE
前端:
<a class="remove" data-id="<%= student.id%>">Delete</a>
<script>
const deleteLink = document.querySelector('a.remove');
deleteLink.addEventListener('click', (e) => {
const studentId = deleteLink.dataset.id;
fetach(`/students/${studentId}`, {
method: 'DELETE'
})
.then(response => response.json())
.then(data => window.location.href = data.redirectUrl))
.catch(err => {
console.log(err);
})
})
</script>
Express代码:
app.delete('/students/:id', (req, res) => {
Student.delete(req.params.id)
.then(result => {
// 由于这里相应Ajax请求,因此发送回json,而不是重定向
res.json( { redirectUrl: '/studentlist' } );
})
.catch(err => {
console.log(err);
})
});