Warm tip: This article is reproduced from serverfault.com, please click

spring-如果json对象在发布请求中缺少键,则引发错误

(spring - Raise error in case if json object has missing keys in post request)

发布于 2020-11-28 12:54:08

我在发帖请求中发送了一个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},那么我得到一个响应,指出错误的请求“名称未定义”。

有人可以在这里分享一些想法吗?我应该如何处理这种情况?我不想在发布请求中写其他内容,因为我的数据将非常大,并且将有许多必不可少的键。

Questioner
Atya
Viewed
0
Hex 2020-11-29 00:55:44

我懂了。试试这个:

@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