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

Restful接口调用统一异常处理

时间:2020-11-01 20:42:55      阅读:18      评论:0      收藏:0      [点我收藏+]

标签:stp   and   bad   miss   sage   dia   ping   ada   逻辑   

1.关键字解释

//它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法加一些逻辑处理
@ControllerAdvice
//异常定义
@ExceptionHandler
//返回格式为json,可以使用 @RestControllerAdvice 代替 @ControllerAdvice,这样在方法上就可以不需要添加 @ResponseBody
@ResponseBody

2.springmvc对于http请求的异常类型

Exception Type

HTTP Status Code 

ConversionNotSupportedException

500 (Internal Server Error) 

HttpMediaTypeNotAcceptableException

 

406 (Not Acceptable)  

HttpMediaTypeNotSupportedException

 

415 (Unsupported Media Type) 

HttpMessageNotReadableException

 

400 (Bad Request) 

HttpMessageNotWritableException

 

 500 (Internal Server Error) 

HttpRequestMethodNotSupportedException

 

405 (Method Not Allowed) 

MissingServletRequestParameterException

400 (Bad Request)  

 

NoSuchRequestHandlingMethodException

 

404 (Not Found)  

 

TypeMismatchException

 

400 (Bad Request)

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.代码

@ControllerAdvice
public class RestfulApiExceptionHandler {
    /**
     * 缺失参数
     * @param request
     * @param exception
     * @return
     */
    @ExceptionHandler(value = MissingServletRequestParameterException.class)
    @ResponseBody
    public Response missingParameterExceptionHandler(HttpServletRequest request, MissingServletRequestParameterException exception){
        return Response.failure("缺少必要参数,参数名称为" + exception.getParameterName());
    }

    /**
     * 参数类型不匹配
     * @param request
     * @param exception
     * @return
     */
    @ExceptionHandler({TypeMismatchException.class})
    @ResponseBody
    public Response typeMismatchExceptionHandler(HttpServletRequest request,TypeMismatchException exception){
        return Response.failure("参数类型不匹配,类型应该为" + exception.getRequiredType());
    }

    /**
     * 请求方法不支持
     * @param request
     * @param exception
     * @return
     */
    @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
    @ResponseBody
    public Response methodNotSupportedExceptionHandler(HttpServletRequest request,HttpRequestMethodNotSupportedException exception){
        return Response.failure("不支持的请求方法");
    }
    /**
     * 其他异常
     * @param request
     * @param exception
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Response exceptionHandler(HttpServletRequest request, Exception exception){
        return Response.failure("系统异常");
    }
}

 

Restful接口调用统一异常处理

标签:stp   and   bad   miss   sage   dia   ping   ada   逻辑   

原文地址:https://www.cnblogs.com/i-tao/p/13846999.html

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