Next.js(五)中间件

本文介绍了在App或pages同级的middleware.js文件中,如何使用两种方法进行路径和参数匹配,包括matcher配置项的正则表达式和条件语句。此外,还详细讲解了如何操作cookies、headers以及NextResponse的使用,特别指出Middleware目前仅支持Edgeruntime且应避免Node.jsAPI的使用。
摘要由CSDN通过智能技术生成

在 app 或者 pages 同级创建文件 middleware.js

中间件有两种写法,可用于匹配:

1、matcher 配置项

匹配规则:

/about/:path* 匹配 /about、/about/xxx、/about/xxx/xxx

/about/:path? 匹配 /about、/about/xxx

/about/:path+ 匹配 /about/xxx、/about/xxx/xxx

也可以在圆括号中使用标准的正则表达式:

/about/(.*)  <=>  /about/:path*

/(about|settings) 匹配 /about 和 /settings

/user-(a|b) 匹配 /user-a 和 /user-b

有个常用的匹配规则记录一下:

matcher 除了可以匹配路径,还可以匹配参数:

 

2、条件语句

直接在逻辑里写,这种比较方便

读取和设置 cookies: 

对于传入的参数:提供了 get、getAll、set 和 delete 来处理 cookies,也可以用 has 来检查 cookies,用 clear 来删除所有的 cookies:

用 const response = NextResponse.next() 可以拿到响应内容,同样可以在里面设置 cookies:

 

设置成功:

读取和设置 headers: 

取 request 的 headers:

const requestHeader = new Headers(request.headers)

 

设置 responese 的请求头:

 

 

为 NextResponse.rewrite 写请求头:

 

执行顺序:

 

相关配置:

skipTrailingSlashRedirect:

 

使用 Middleware 的时候还要注意一点,那就是目前 Middleware 只支持 Edge runtime,并不支持 Node.js runtime。这意味着写 Middleware 的时候,尽可能使用 Web API,避免使用 Node.js API 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值