攔截器中獲取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: \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風格的參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM