1.一般响应设置(使用express框架实现)
const express = require('express');
const app=express();
// 此处填入一个id的占位符
app.get('/response',(req,res)=>{
// 原生响应
// res.setHeader('Content-Type','text/plain; charset=utf-8');
// res.setHeader('aaa','bbb');
// res.statusCode=404;
// res.statusMessage='Not Found';
// res.end('hello express');
// express响应(send可以设置响应体)
res.status(404).send('hello express');
res.set('aaa','bbb');
})
app.listen(9000,()=>{
console.log('端口服务运行中...');
})
2.重定向、下载响应、JSON响应
2.1 重定向:实现访问other路由后跳转到百度
// 导入express
const express = require('express');
// 创建应用对象
const app = express();;
// 实现访问other路由后跳转到百度
// 创建路由
app.get('/other',(req,res)=>{
// 跳转响应
res.redirect('https://www.baidu.com/');
res.status(404).send('hello express');
})
// 监听端口、启动服务
app.listen(9000,()=>{
console.log('端口服务运行中...');
})
2.2 下载响应
// 导入express
const express = require('express');
// 创建应用对象
const app = express();;
// 实现访问other路由后跳转到百度
// 创建路由
app.get('/other',(req,res)=>{
// 跳转响应
// res.redirect('https://www.baidu.com/');
// res.status(404).send('hello express');
// 下载响应
res.download(__dirname+'/singer.json');
})
// 监听端口、启动服务
app.listen(9000,()=>{
console.log('端口服务运行中...');
})
结果
2.3 json响应--最常用的
const express = require('express');
const app = express();
app.get('/',(req,res)=>{
res.json({
name:'张三',
age:18
});
});
app.listen(9000,()=>{
console.log('服务启动成功');
});
3.express中间件--类似于前端axios的拦截器
3.1 全局中间件
const express = require('express');
const fs = require('fs');
const path = require('path');
const app = express();
// 创建中间件
function recodemiddleware(req,res,next){
let{url,ip,params}=req;
fs.appendFileSync(path.resolve(__dirname,'./log.txt'),`${ip} ${url} ${params}\n`);
// 必须调用next,否则后续进行的路由处理不会执行
next();
}
// 使用中间件(必须)
app.use(recodemiddleware);
app.get('/home', (req, res) => {
res.send('前台');
});
app.get('/login', (req, res) => {
res.send('后台');
});
// 404 处理
app.use((req, res) => {
res.status(404).send('404 not found');
});
app.listen(9000, () => {
console.log('服务启动成功');
});
结果:
3.2 路由中间件
需求:判断url中code参数是否为521
3.2.1 未封装中间件
const express = require('express');
const app = express();
app.get('/home', (req, res) => {
res.send('前台');
});
app.get('/login', (req, res) => {
if(req.query.code==='521'){
res.send('后台首页');
}
else{
res.send('暗号错误');
}
});
app.get('/setting', (req, res) => {
res.send('后台设置');
});
// 404 处理
app.use((req, res) => {
res.status(404).send('404 not found');
});
app.listen(9000, () => {
console.log('服务启动成功');
});
login路由后未加code参数
login后添加code参数
3.2.2 封装中间件
const express = require('express');
const app = express();
// 声明中间件
let checkcode=(req, res, next)=>{
if(req.query.code==='521'){
next();
}
else{
res.send('暗号错误');
}
}
app.get('/home', (req, res) => {
res.send('前台');
});
// 将封装的中间件放置在需要的路由上(这里测试放在login和setting路由上)
app.get('/login', checkcode, (req, res) => {
res.send('后台首页');
});
app.get('/setting', checkcode, (req, res) => {
res.send('后台设置');
});
// 404 处理
app.use((req, res) => {
res.status(404).send('404 not found');
});
app.listen(9000, () => {
console.log('服务启动成功');
});
setting成功使用封装的中间件
4 静态资源中间件
结果: