返回JSON格式(二十五)

本文介绍如何在SpringBoot中创建统一的异常处理机制,通过自定义异常类和使用@ControllerAdvice注解,实现在RESTful API中返回JSON格式的错误信息。具体包括创建ErrorInfo类用于封装错误信息,定义MyException异常类,以及在Controller中抛出异常并由GlobalExceptionHandler进行捕获和处理。
摘要由CSDN通过智能技术生成

在上述例子中,通过@ControllerAdvice统一定义不同Exception映射到不同错误处理页面。而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这时候我们也能轻松支持。

本质上,只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数return的内容转换为JSON格式。

下面以一个具体示例来实现返回JSON格式的异常处理。

  • 创建统一的JSON返回对象,code:消息类型,message:消息内容,url:请求的url,data:请求返回的数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public  class  ErrorInfo<T> {
     
         public  static  final  Integer OK =  0 ;
         public  static  final  Integer ERROR =  100 ;
     
         private  Integer code;
         private  String message;
         private  String url;
         private  T data;
     
         // 省略getter和setter
     
    }

      

     

  • 创建一个自定义异常,用来实验捕获该异常,并返回json
    1
    2
    3
    4
    5
    6
    7
    public  class  MyException  extends  Exception {
     
         public  MyException(String message) {
             super (message);
         }
         
    }

      

     

  • Controller中增加json映射,抛出MyException异常
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Controller
    public  class  HelloController {
     
         @RequestMapping ( "/json" )
         public  String json()  throws  MyException {
             throw  new  MyException( "发生错误2" );
         }
     
    }

     

  • MyException异常创建对应的处理
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @ControllerAdvice
    public  class  GlobalExceptionHandler {
     
         @ExceptionHandler (value = MyException. class )
         @ResponseBody
         public  ErrorInfo<String> jsonErrorHandler(HttpServletRequest req, MyException e)  throws  Exception {
             ErrorInfo<String> r =  new  ErrorInfo<>();
             r.setMessage(e.getMessage());
             r.setCode(ErrorInfo.ERROR);
             r.setData( "Some Data" );
             r.setUrl(req.getRequestURL().toString());
             return  r;
         }
     
    }
  • 启动应用,访问:http://localhost:8080/json,可以得到如下返回内容
  • 1
    2
    3
    4
    5
    6
    {
         code:  100
         data:  "Some Data"
         message:  "发生错误2"
         url:  "http://localhost:8080/json"
    }

      

    至此,已完成在Spring Boot中创建统一的异常处理,实际实现还是依靠Spring MVC的注解,更多更深入的使用可参考Spring MVC的文档。

转载于:https://www.cnblogs.com/MaxElephant/p/10232166.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值