> 文章列表 > 八、express框架解析

八、express框架解析

八、express框架解析

文章目录

  • 前言
  • 一、express 路由简介
    • 1、定义
    • 2、基础使用
  • 二、express 获取参数
    • 1、获取请求报文参数
    • 2、获取路由参数
  • 三、express 响应设置
    • 1、一般响应设置
    • 2、其他响应设置
  • 四、express 防盗链
  • 五、express 路由模块化
    • 1、模块中代码如下:
    • 2、主文件中代码如下:

前言

express是一个基于Node.js平台的极简、灵活的WEB应用开发框架。它是一个封装好的工具包,封装了很多功能,便于我们开发WEB应用(HTTP服务)。
express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建Web 服务器的。
express 的本质:就是一个npm 上的第三方包,提供了快速创建Web 服务器的便捷方法。


一、express 路由简介

1、定义

路由确定了应用程序如何响应客户端对特定端点的请求

2、基础使用

一个路由的组成有请求方法路径回调函数组成

// 导入express
const express=require('express');// 创建应用对象
const app=express();// 创建路由
app.get('/home',(req,res)=>{res.end('hello express');
});app.post('/login',(req,res)=>{res.end('login login')
})// 404响应
app.all('*',(req,res)=>{res.end('404 not Found')
})// 监听端口,启动服务
app.listen(3000,()=>{console.log('服务已经启动,端口3000正在监听中....')
})

二、express 获取参数

1、获取请求报文参数

代码如下:

// 创建路由
app.get('/home',(req,res)=>{// 原生操作console.log(req.method);console.log(req.url);console.log(req.httpVersion);console.log(req.headers);// express 操作console.log(req.path);console.log(req.query);console.log(req.ip);// 获取请求头console.log(req.get('host'));
});

2、获取路由参数

代码如下:

// 创建路由
app.get('/:id.html',(req,res)=>{// 获取url路由参数console.log(req.params.id);res.setHeader('content-type','text/html;charset=utf-8');res.end('商品详情')
});

三、express 响应设置

1、一般响应设置

代码如下:

// 创建路由
app.get('/:id.html',(req,res)=>{// 原生响应res.statusCode=404;res.statusMessage='Error';res.setHeader('xxx','yyy');res.write('hello express');res.end('response');// express响应res.status(500);res.set('aaa','bbb');res.send('你好');// 连贯操作res.status(404).set('xxx','yyy').send('你好朋友')
});

2、其他响应设置

app.get('/:id.html',(req,res)=>{// 跳转响应res.redirect('www.baidu.com');// 下载响应res.download(__dirname+'/package.json');// JSON响应res.json({name:'网页',slogon:'你好'})// 响应文件内容res.sendFile(__dirname+'/test.html');
});

四、express 防盗链

代码如下:

app.use((req,res,next)=>{//检测请求头中referer是否为127.0.0.1//获取refererlet referer=req.get('referer');if(referer){// 实例化let url=new URL(referer);// 获取hostnamelet hostname=url.hostname;// 判断if(hostname!=='127.0.0.1'){// 响应404res.status(404).send('<h1>404</h1>')return;}}   next();
})

五、express 路由模块化

1、模块中代码如下:

const express =require('express');
// 创建路由对象
const router=express.Router();
router.get('/admin',(req,res)=>{res.send('....')
});
// 向外暴露模块
module.exports=router;

2、主文件中代码如下:

const 模块名=require('./...')
app.use('模块名')