码迷,mamicode.com
首页 > 其他好文 > 详细

拦截器中获取restful风格参数

时间:2020-01-05 09:53:57      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:控制   ping   let   测试   conf   ice   andriod   servlet   system   

controller层:

    @GetMapping(value = "/api/users/{device}")
    public ResultDO get(@PathVariable("device") String device){
        ***
    }        

拦截器中:

public class ParameterInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //传统方式获取
        String device = request.getParameter("device");
        System.out.println("传统方式获取device: \t" + device);
        //map方式
        Map map = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
        System.out.println("map封装格式: \t" + map);
        return true;
    }
    ***
}       

配置拦截器:

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {

    @Autowired
    private ParameterInterceptor parameterInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(parameterInterceptor).addPathPatterns("/api/users/**");
    }

    @Bean
    public ParameterInterceptor parameterInterceptor(){
        return new ParameterInterceptor();
    }
}

运行sprinboot项目访问访问 URL: http://127.0.0.1:8080/api/users/andriod 测试,查看控制台输出:

传统方式获取device:   null
map封装格式:    {device=andriod}

说明request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE)这种方式能获取到restful风格的参数

拦截器中获取restful风格参数

标签:控制   ping   let   测试   conf   ice   andriod   servlet   system   

原文地址:https://www.cnblogs.com/youngyajun/p/12151421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!