Kotlin + Spring Boot 请求参数验证的代码实例
编写 Web 应用程序的时候,经常要做的事就是要对前端传回的数据进行简单的验证,比如是否非空、字符长度是否满足要求,邮箱格式是否正确等等。在 Spring Boot 中,可以使用 Bean Validation (JSR-303) 技术通过注解的方式来进行参数验证。
准备 DTO 对象
data class UserRegisterModel(
@get: NotEmpty(message = "User name is required")
@get: Size(message = "Length of user name must be between 6 and 20", min = 6, max = 20)
var username: String,
@get: NotEmpty(message = "Password is required")
var password: String,
@get: NotEmpty(message = "Email is required")
@get: Email
var email: String)
这里定义了一个十分常见的 DTO 对象,用来承载用户注册时的数据,可能你已经注意到了一些奇怪的地方,在一些注解的前面多了get:这样的东西,是因为 kotlin 会直接在字节码中生成 getter 跟 setter,这样写是显式的是表明这个注解应该作用在getter上。
准备一个 Controller
/**
* 用户注册接口
*/
@PostMapping
fun register(@Valid @RequestBody model: UserRegisterModel): Any {
val user = User(userName = model.username, password = model.password, email = model.email)
userRepo.save(user)
return user
}
只需要在需要验证的参数前加上 @Valid 注解,Spring 就会自动的验证参数的正确性。
来个测试
把用户名空着

参数完整且正确

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
springboot3.x版本集成log4j冲突以及解决log4j冲突不生效问题
由于Spring Boot自带的Logback与Log4j冲突,去除了Logback的jar包后仍存在,原因是其他包也引入了Logback,解决方法是找到并去除引入Logback的其他包,如actuator包,并更新Maven2024-11-11
基于Redis分布式锁Redisson及SpringBoot集成Redisson
这篇文章主要介绍了基于Redis分布式锁Redisson及SpringBoot集成Redisson,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小小伙伴可以参考一下2022-09-09
解析ConcurrentHashMap: transfer方法源码分析(难点)
ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment的结构和HashMap类似,是一种数组和链表结构,今天给大家普及java面试常见问题---ConcurrentHashMap知识,一起看看吧2021-06-06


最新评论