Spring Cloud Spring Boot mybatis分布式微服务云架构 返回JSON格式

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

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

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

  • 创建统一的JSON返回对象,code:消息类型,message:消息内容,url:请求的url,data:请求返回的数据
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

public class MyException extends Exception {  

    public MyException(String message) {
        super(message);
    }  

}  

Controller中增加json映射,抛出MyException异常

@Controller
public class HelloController {  

    @RequestMapping("/json")
    public String json() throws MyException {
        throw new MyException("发生错误2");
    }  

}  

MyException异常创建对应的处理

@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,可以得到如下返回内容

{
    code: 100,
    data: "Some Data",
    message: "发生错误2",
    url: "http://localhost:8080/json"
}  

完整项目的源码来源 技术支持求求1791743380

原文地址:https://www.cnblogs.com/sc-sc/p/9229252.html

时间: 2024-10-10 14:25:55

Spring Cloud Spring Boot mybatis分布式微服务云架构 返回JSON格式的相关文章

springCloud Spring Boot mybatis分布式微服务云架构-docker-hystrix-dashboard-turbine(九)

简介 Hystrix的主要优点之一是它收集关于每个HystrixCommand的一套指标.Hystrix仪表板以有效的方式显示每个断路器的运行状况,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的断路器是否打开,请求响应时间, 请求失败率,请求超时个数等等数据.但是只使用Hystrix Dashboard的话, 你只能看到单个应用内的服务信息, 这明显不够. 我们需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard上,

Spring Cloud Spring Boot mybatis分布式微服务云架构(二)使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也可以通过<Springboot快速入门>一文中提到的SPRING INITIALIZR页面工具来创建,相信每位读者都有自己最喜欢和最为熟练的创建方式. 本文我们将介绍嵌入的Intellij中的Spring Initializr工具,它同Web提供的创建功能一样,可以帮助我们快速的构建出一个基础的S

springcloud Spring Boot mybatis分布式微服务云架构(三):服务提供与调用

上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册中心,搭建一个简单的服务端注册服务,客户端去调用服务使用的案例. 案例中有三个角色:服务注册中心.服务提供者.服务消费者,其中服务注册中心就是我们上一篇的eureka单机版启动既可,流程是首先启动注册中心,服务提供者生产服务并注册到服务中心中,消费者从服务中心中获取服务并执行. 服务提供 我们假设服务提供者有一个hello方法,可以根据传入的参数,提供输出"hello xxx,this is firs

Spring Cloud Spring Boot mybatis分布式微服务云架构(二)

通过命令行设置属性值 相信使用过一段时间Spring Boot的用户,一定知道这条命令:java -jar xxx.jar --server.port=8888,通过使用–server.port属性来设置xxx.jar应用的端口为8888. 在命令行运行时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识.所以,java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属

Spring Cloud Spring Boot mybatis分布式微服务云架构(三)属性配置文件详解(1)

相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁多的XML配置内容,替代它的是在pom.xml中引入模块化的Starter POMs,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在application.properties中完成一些属性配置就能开启各模块的应用. 在之前的各篇文章中都有提及关于application.pro

Spring Cloud Spring Boot mybatis分布式微服务云架构(一)快速入门

快速入门 本章主要目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单.开发快速的特性. 系统要求: Java 7及以上Spring Framework 4.1.5及以上本文采用Java 1.8.0_73.Spring Boot 1.3.2调试通过. 使用Maven构建项目 通过SPRING INITIALIZR工具产生基础项目访问:http://start.spring.io/选择构建工具Mav

Spring Cloud Spring Boot mybatis分布式微服务云架构 开发Web应用

静态资源访问在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. 默认配置Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /static/public/resources/META-INF/resources举例:我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件.启动程序后,尝试访问http://localhost:8080/D.jpg.如能显示图片,配置成功. 渲染Web页面在

Spring Cloud Spring Boot mybatis分布式微服务云架构(十三)

准备工作 首先,构建一个简单的Web工程,以用于后续添加安全控制,也可以用之前Chapter3-1-2做为基础工程.若对如何使用Spring Boot构建Web应用,可以先阅读<Spring Boot开发Web应用>一文. Web层实现请求映射 [java] view plain copy@Controller public class HelloController { @RequestMapping("/") public String index() { return

Spring Cloud Spring Boot mybatis分布式微服务云架构(十三)使用Spring Security安全控制

准备工作 首先,构建一个简单的Web工程,以用于后续添加安全控制,若对如何使用Spring Boot构建Web应用,可以先阅读<Spring Boot开发Web应用>一文. Web层实现请求映射 @Controller public class HelloController { @RequestMapping("/") public String index() { return "index"; } @RequestMapping("/he