Nodejs快速上手D3--express框架

9 阅读2分钟

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('端口服务运行中...');
})

image.png

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('端口服务运行中...');
})

结果

image.png

2.3 json响应--最常用的

const express = require('express');

const app = express();

app.get('/',(req,res)=>{

res.json({

name:'张三',

age:18

});

});

app.listen(9000,()=>{

console.log('服务启动成功');

});

image.png

3.express中间件--类似于前端axios的拦截器

3.1 全局中间件

image.png

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('服务启动成功');

});

image.png 结果:

image.png

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参数

image.png login后添加code参数
image.png

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成功使用封装的中间件

image.png

4 静态资源中间件

image.png

结果:

image.png

4.1 静态资源中间件进行练习