八、express框架解析

本文介绍了Express的基础知识,包括路由的定义和使用,如GET和POST方法,以及如何获取请求参数和路由参数。还详细讲解了如何设置HTTP响应,如状态码、头部信息和发送不同类型的内容。此外,讨论了防止盗链的策略和路由模块化的实现方法,帮助开发者更好地理解和应用Express。
摘要由CSDN通过智能技术生成


前言

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
   //获取referer
   let referer=req.get('referer');
   if(referer){
    // 实例化
    let url=new URL(referer);
    // 获取hostname
    let hostname=url.hostname;
    // 判断
    if(hostname!=='127.0.0.1'){
        // 响应404
        res.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('模块名')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鞋不压震

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值