拦截器中获取restful风格参数

Posted youngyajun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拦截器中获取restful风格参数相关的知识,希望对你有一定的参考价值。

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: 	" + device);
        //map方式
        Map map = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
        System.out.println("map封装格式: 	" + 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风格参数的主要内容,如果未能解决你的问题,请参考以下文章

Springday05 SpringMVC访问静态资源操作请求域控制器方法返回值JSON数据交互RESTful风格文件上传异常处理拦截器

Restful风格接口书写规范

RESTFUL设计风格

spring拦截器

在RESTFUL风格中怎样定义需要多个参数才能确定的资源路径

解决SpringMVC拦截静态资源的问题