@validated注解异常返回JSON值方式

当使用@Validated注解对方法或参数进行参数校验时,如果发现参数校验不通过,可以使用异常返回JSON值方式来返回异常信息,以帮助客户端更好地处理错误信息。

以下是实现@Validated注解异常返回JSON值方式的完整攻略:

1. 添加依赖

在Maven项目的pom.xml文件中添加以下依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2. 添加@RequestParam注解

在需要进行参数校验的方法或参数上添加@RequestParam注解,并设置对应的校验规则,例如:

public void testParam(@RequestParam @NotBlank(message = "用户名不能为空") String username,
                      @RequestParam @NotBlank(message = "密码不能为空") String password) {
    // 方法实现代码
}

3. 添加异常处理器

在Spring Boot应用中,可以通过编写异常处理器来捕获和处理抛出的异常。在本例中,需要编写一个异常处理器来处理参数校验异常,并返回JSON格式的异常信息。

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
        // 获取异常信息
        BindingResult bindingResult = e.getBindingResult();
        List<ObjectError> allErrors = bindingResult.getAllErrors();
        // 构建返回结果
        Map<String, Object> result = new LinkedHashMap<>();
        result.put("code", "400");
        result.put("message", "参数校验失败");
        Map<String, Object> errors = new LinkedHashMap<>();
        allErrors.forEach(error -> errors.put(((FieldError)error).getField(), error.getDefaultMessage()));
        result.put("errors", errors);
        return result;
    }
}

4. 测试

使用POSTMAN等工具发送一个POST请求,请求体中包含了不合法的参数,例如:

{
    "username": "",
    "password": ""
}

这时会返回以下JSON格式的异常信息:

{
    "code": "400",
    "message": "参数校验失败",
    "errors": {
        "username": "用户名不能为空",
        "password": "密码不能为空"
    }
}

以上就是使用@Validated注解异常返回JSON值方式的完整攻略。

示例1:

首先定义实体类TestDTO如下:

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;

@Data
public class TestDTO {
    @NotBlank(message = "用户名不能为空")
    private String username;
    @NotBlank(message = "密码不能为空")
    @Length(min = 6,max = 32,message = "密码长度为6~32位")
    private String password;
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    private String email;
}

现在我们使用该实体类进行参数校验,修改第二步中的代码,并使用@RequestBody注解接收请求体,如下:

public void testParam(@RequestBody @Validated TestDTO testDTO) {
    // 方法实现代码
}

该处理方式与第二步相比,只有@RequestBody和@Validated注解不同。

示例2:

下面我们将讨论如何使用@Validated注解对map进行参数校验。

首先定义一个Map类型的输入参数,如下:

public void testParam(@RequestParam @Validated Map<String,String> map) {
    // 方法实现代码
}

这样就可以使用@Validated注解校验map中的所有参数了。例如,如果我们加入下面的校验规则:

@NotBlank(message = "map中键值对value不能为空")

那么,当map中有一个value为null或空串时,就会抛出异常信息“map中键值对value不能为空”。

以上就是针对两个示例的@Validated注解异常返回JSON值方式的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:@validated注解异常返回JSON值方式 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Element中Select选择器的实现

    Element是一个基于Vue.js的组件库,提供了众多实用的UI组件。其中,Select选择器是一种常用的表单组件,用于从预定义的选项列表中选择一个或多个值。下面是Element中Select选择器的实现攻略。 1. 基本用法 使用Element中的Select选择器,需要先引入Select组件。 <template> <div> …

    JavaScript 2023年6月10日
    00
  • 惰性函数定义模式 使用方法

    惰性函数定义模式指的是,函数在执行时并不会立即返回结果,而是通过一些技巧延迟了函数的执行,让函数具有了更高的灵活性和重复使用性。 下面是使用惰性函数定义模式的方法: 1. 简单的惰性函数定义模式 function addEvent(elem, type, handler) { if (elem.addEventListener) { elem.addEven…

    JavaScript 2023年6月11日
    00
  • webpack文件打包错误异常

    下面是关于“webpack文件打包错误异常”的完整攻略: 异常说明 在使用webpack进行文件打包时,可能会出现各种错误和异常,这些错误和异常可能会导致文件打包失败或编译过程中的错误,如语法错误等。常见的错误和异常有以下几种: 模块依赖错误 语法错误 文件丢失 webpack配置错误 针对不同类型异常,我们需要不同的解决方案以及错误提示信息。 解决方案 模…

    JavaScript 2023年5月28日
    00
  • JavaScript Dom对象的操作

    JavaScript DOM(文档对象模型)是一种使用JavaScript进行web页面编程的基本方式。它提供了API(应用程序接口),用于操作HTML和XML文档。在JavaScript中,DOM是一个对象层次结构,允许开发人员轻松地对HTML标记进行操作和访问。下面是JavaScript Dom对象的基本操作攻略: 获取元素 通过ID获取元素 javas…

    JavaScript 2023年5月27日
    00
  • javascript数组去重常用方法实例分析

    JavaScript数组去重常用方法实例分析 在 JavaScript 中,对于数组去重的方法有很多种,接下来我们分别介绍两种常用的方法,分别是“使用 Set 数据结构去除重复项”和“双重循环判断去除重复项”。 方法一:使用 Set 数据结构去除重复项 Set 数据结构是 ES6 中新增的一种数据类型,它类似于数组,但是成员的值都是唯一的,没有重复的值。我们…

    JavaScript 2023年6月10日
    00
  • 使用Javascript在HTML中显示实时时间

    下面是如何使用Javascript在HTML中显示实时时间的完整攻略: 1. 在HTML中创建一个用于显示时间的元素 首先,在HTML中创建一个<span>元素,用于显示实时时间。 <p>现在的时间是:<span id="time"></span>.</p> 在这里,我们使用了一…

    JavaScript 2023年5月27日
    00
  • 使用canvas生成含有微信头像的邀请海报没有微信头像问题

    使用Canvas生成含有微信头像的邀请海报是一项常见的需求,当中有时会遇到生成海报时,无法正确显示微信头像的问题。基于此,我编写了以下攻略来帮助您解决该问题。 常见问题分析 微信头像无法正确显示原因 微信头像无法正确显示,通常情况下是由于CORS的限制所导致的。在浏览器中,脚本的跨源HTTP请求通常会受到同源策略的限制,因此无法获取其他网站的数据。而我们在使…

    JavaScript 2023年6月11日
    00
  • Js 正则表达式知识汇总

    Js 正则表达式知识汇总 什么是正则表达式? 正则表达式是一种用来匹配字符串模式的工具,它由字符和特殊字符组成。在JavaScript中,可以使用RegExp对象来表示正则表达式模式。正则表达式可以用来在字符串中查找匹配的文本、替换文本、验证内容格式等。 正则表达式的语法 正则表达式语法很强大,要掌握所有的用法需要花费一定的时间和精力。下面是一些常见的元字符…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部