Kotlin和Spring Boot请求身体验证

问题描述 投票:4回答:1

我刚刚开始使用kotlin与Spring Boot一起开发一个简单的Web应用程序。

我们来看一个简单的数据类对象

@Entity  
data class User (name: String) {  
  @Id @GeneratedValue(strategy = GenerationType.AUTO)  
  var id: Long = -1  
}  

和控制器

@RequestMapping(method = arrayOf(RequestMethod.POST))
fun createUser (@RequestBody user: User): User {
    return userService.createUser(user)
}

好吧,向任何请求主体发出请求只会抛出一个http 400错误no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?); nested exception is com.fasterxml.jackson.databind.JsonMappingException

为了消除这个错误,我发现我们需要给构造函数参数赋予一些默认值,这样:

name: String = ""

或者可能:

name: String? = null

现在,绝对没有验证响应体上的输入,这意味着,如果其中存在的JSON不遵守User类的语法,则将使用默认值并将其存储在数据库中。

有没有办法验证请求体JSON输入如果它不符合User类参数而不必手动执行就抛出错误请求?

在这个例子中只有一个参数,但手动更大的类似乎不是一个好方法

提前致谢

spring validation spring-boot kotlin httprequest
1个回答
0
投票

是的,有一些方法可以“自动”验证请求正文JSON。

JSON Schema就是其中之一,并且有几个实现。 Spring Data Rest包括它,所以这可能是你的第一选择,因为Spring Boot包装得非常好。

© www.soinside.com 2019 - 2024. All rights reserved.