java拦截器获取方法参数名_SpringBoot 拦截器获取http请求参数

SpringBoot 拦截器获取http请求参数—— 所有骚操作基础

目录

SpringBoot 拦截器获取http请求参数—— 所有骚操作基础

获取http请求参数是一种刚需

定义拦截器获取请求

为什么拦截器会重复调两遍呢?

ServletInputStream(CoyoteInputStream) 输入流无法重复调用

自定义 HttpServletRequestWrapper

总结一下 展望一下

获取http请求参数是一种刚需

我想有的小伙伴肯定有过获取http请求的需要,比如想

1、 前置获取参数,统计请求数据

2、 做服务的接口签名校验

3、 敏感接口监控日志

4、 敏感接口防重复提交

等等各式各样的场景,这时你就需要获取 HTTP 请求的参数或者请求body,一般思路有两种,一种就是自定义个AOP去拦截目标方法,第二种就是使用拦截器。整体比较来说,使用拦截器更灵活些,因为每个接口的请求参数定义不同,使用AOP很难细粒度的获取到变量参数,本文主线是采用拦截器来获取HTTP请求。

定义拦截器获取请求

基于 spring-boot-starter-parent 2.1.9.RELEASE

看起来这个很简单,这里就直接上code,定义个拦截器

/**

* @author axin

* @summary HTTP请求拦截器

*/

@Slf4j

public class RequestInterceptor implements HandlerInterceptor {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

//获取请求参数

String queryString = request.getQueryString();

log.info("请求参数:{}", queryString);

//获取请求body

byte[] bodyBytes = StreamUtils.copyToByteArray(request.getInputStream());

String body = new String(bodyBytes, request.getCharacterEncoding());

log.info("请求体:{}", body);

return true;

}

}

然后

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值