Spring Boot中GET和POST请求参数校验为何不同,如何统一处理校验结果?

spring boot接口参数校验:get与post请求差异及统一处理方案

本文探讨Spring Boot中GET和POST请求参数校验的差异,并提供一种统一处理校验结果的方案。

Spring Boot中GET和POST请求参数校验为何不同,如何统一处理校验结果?

问题描述:

在Spring Boot v2.7.14-snapshot版本中,使用spring-boot-starter-validation依赖。POST请求使用@RequestBody @Valid进行参数校验,能有效捕获MethodArgumentNotValidException并返回类似“校验失败: parentId:不能为null”的错误信息。然而,GET请求使用@RequestParam long feedId,即使添加@Validated注解和@NotNull注解,也无法正常校验,而是抛出MissingServletRequestParameterException异常,提示“required request parameter ‘feedId’ for method parameter type long is not present”。 目标是使GET请求的校验结果与POST请求一致,返回类似“校验失败: feedId:不能为null”的错误信息。

解决方案:

为了统一GET和POST请求的参数校验及错误处理,建议采用以下方法:

封装GET请求参数: 将GET请求参数封装到一个DTO对象中。例如,创建一个ApiGetRequest类:

public class ApiGetRequest {    @NotNull    private Long feedId;    // getters and setters}

登录后复制

本文来自互联网或AI生成,不代表软件指南立场。本站不负任何法律责任。

如若转载请注明出处:http://www.down96.com/tutorials/3630.html

热心网友热心网友
上一篇 2025-04-11 14:46
下一篇 2025-04-11 14:46

相关推荐

本站[软件指南]所有内容来自互联网投稿或AI智能生成,并不代表软件指南的立场。