由杰克逊解析JSON

时间:2015-06-22 06:26:18

标签: java json hibernate jackson

我有一个表单,其中JSON中打包的参数由Jackson解析。如果参数类型是' int'并且用户输入一个大数字,我有一个例外。我限制在客户端执行此操作,但想知道,处理此类异常的最佳做法是什么?我应该打扰吗?或者它还好吗?

1 个答案:

答案 0 :(得分:2)

始终包括服务器端验证

由于可以通过手动向端点发送请求(例如在PostMan中或使用DevTools)来轻松避免客户端验证,因此您可以鼓励在客户端和服务器端进行验证。特别是如果您想公开开放API,服务器端验证至关重要。您无法信任与您的API交互的每个客户。以下是几点建议:

返回422 Unprocessable Entity

的响应状态

假设您使用HTTP进行通信,则要返回的相应响应代码为422. 422表示验证错误,并且存在质量说明here。为不同的错误场景返回描述性状态代码更符合RESTful / HTTP标准。对于此示例,您通过返回422而不是500来为客户提供更多信息。您可以通过返回描述无效字段的错误响应来进一步提升信息。

使用JAX-RS将异常映射到响应

JAX-RS是一种规范,可以轻松地用Java构建RESTful Web服务。如果您的应用程序中已经连接了JAX-RS实现,则可以定义exception mapper以查找JsonMappingException,检查NumberFormatException的原因(如果您使用的是Integer { {1}})并在案件发生时返回相应的答案。