spring boot404返回json而不是返回错误页面

spring boot在请求一个不存在的接口时会返回一个错误页面,而有些情况下我希望返回一个json而json中标识错误。
这里使用spring提供的@ExceptionHandler来处理
首先在yml中设置没有绑定的url直接抛出错误

spring:
  mvc:
    throw-exception-if-no-handler-found: true

添加错误处理类


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import com.zy.framework.constant.Constant;
import com.zy.framework.constant.JsonResponse;

import springfox.documentation.annotations.ApiIgnore;

/**
 * <p>
 * Title: 倬元信息
 * </p>
 * <p>
 * Copyright: Copyright (c) 2017
 * </p>
 * <p>
 * Version:zhuoyuan V1.0
 * </p>
 */
@RestControllerAdvice
@ApiIgnore
public class AllExceptionHandler {

	static Logger logger = LoggerFactory.getLogger(AllExceptionHandler.class);
	
	@ExceptionHandler(value = Exception.class)
    public JsonResponse<?> defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
        logger.error("", e);
        JsonResponse<?> r = new JsonResponse<>();
        r.setMessage(e.getMessage());
        if (e instanceof org.springframework.web.servlet.NoHandlerFoundException) {
             r.setStatus(404);
        } else {
             r.setStatus(500);
        }
        r.setData(null);
        return r;
    }
}

JsonResponse是自定义的返回对象


public class JsonResponse<T> {

	private int status;
	
	private T data;
	
	private String message;

// 省略 getter setter
}

这时候访问一个不存在的url会返回如下
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 提供了多种方式来验证 RESTful API 返回JSON。 1. 手动验证 手动验证是最基本的验证方式。通过使用 Postman 或类似的工具发送请求,然后手动比较返回JSON 和预期的 JSON 是否一致。这种方法适用于简单的 API,但对于复杂的 API,手动验证将变得非常困难。 2. 单元测试 单元测试是验证 RESTful API 返回JSON 的最佳方式之一。通过使用 Spring Boot 的测试框架,可以编写测试用例来模拟 API 请求,并验证返回JSON 是否符合预期。这种方法可以自动化测试,并在代码变更时自动运行测试用例,确保 API 的正确性。 3. 集成测试 集成测试是测试整个系统的功能的最佳方式,包括 RESTful API。通过使用集成测试,可以验证 API 返回JSON 是否符合预期,并确保整个系统的正确性。集成测试可以使用自动化测试框架,例如 Selenium、Cucumber 或 Robot Framework。 4. Swagger UI Swagger UI 是一个流行的 API 文档和测试工具,可以使用它来验证 RESTful API 返回JSON。Swagger UI 可以在 API 文档中直接测试 API,并验证返回JSON 是否符合预期。此外,Swagger UI 还提供了自动生成 API 文档的功能,使得 API 的文档化变得非常容易。 5. JSON 校验工具 最后,可以使用 JSON 校验工具来验证 RESTful API 返回JSON。这些工具可以检查 JSON 是否符合规范,并提供有关 JSON错误的详细信息。一些流行的 JSON 校验工具包括 JSONLint、JSON Validator 和 JSON Formatter。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值