我在发帖请求中发送了一个json。如果缺少任何键,我想提出一个友好的错误。
@PostMapping("/copy")
fun post(@RequestBody user: User): String {
log.debug("Received a request")
return "hello"
}
data class User(
val name: String,
val age: Int
)
所以我的问题是,如果我发布请求,并且发布数据,例如:{“ age”:23},那么我得到一个响应,指出错误的请求“名称未定义”。
有人可以在这里分享一些想法吗?我应该如何处理这种情况?我不想在发布请求中写其他内容,因为我的数据将非常大,并且将有许多必不可少的键。
我懂了。试试这个:
@ExceptionHandler(HttpMessageNotReadableException::class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
fun handleError(exception: HttpMessageNotReadableException): String =
exception.mostSpecificCause.message ?:exception.localizedMessage
输出应如下:
指定为非null的参数为null:方法hex.adapter.Example $ User。,参数名称
要将其格式化为“未定义名称”,你可以这样写:
@ExceptionHandler(HttpMessageNotReadableException::class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
fun handleError(exception: HttpMessageNotReadableException): String =
exception.mostSpecificCause.message
?.split("parameter ")
?.get(1)
?.let { "$it is not defined" }
?:exception.localizedMessage