【发布时间】:2022-01-04 11:52:04
【问题描述】:
当使用 Spring Boot 构建 REST API 时,似乎会抛出 HttpMessageNotReadableException,例如 JSON 请求正文不正确,因此无法解析。
假设 REST API 端点需要以下 JSON 请求正文:
{ "email": "myemail@email.com" }
但是,提供了以下 JSON 请求正文(缺少引号):
{ "email: "myemail@email.com" }
结果是以下异常消息:
JSON 解析错误:意外字符('m'(代码 109)):期待 用于分隔字段名称和值的冒号;嵌套异常是 com.fasterxml.jackson.core.JsonParseException:意外字符 ('m' (code 109)): 期望用冒号分隔字段名和 值\n 在 [Source: (PushbackInputStream);行:2,列:15]
现在,此异常消息包含有用的信息,例如意外字符、预期的字符以及位置。然而,异常消息也会泄露实现细节,这对我的用例来说是不可取的。
HttpMessageNotReadableException没有单独暴露获取有用信息的方法。此外,异常消息以不同的“风格”存在,并且没有使用共同的结构,因此字符串解析似乎不可行。
因此,我的问题是:如何在不暴露实现细节的情况下将 HttpMessageNotReadableException 变成人性化的消息?
【问题讨论】:
标签: spring-boot jackson