正当您正在设计REST
api时,您需要创建自己的Pojo(又名Resource),该Pojo将代表奇怪的行为或验证错误,如horaceman所述。我将向您展示我们如何在应用程序中做到这一点。
由于我们使用JSON作为数据表示形式,因此,如果发生意外的异常,我们希望收到以下信息。
{ "status" : "EXCEPTION", "exceptionName" : "MyCustomException", "exceptionMsg" : "ex.unsupportedOperation" }这当然是一个例子。不错的解决方案是,我们可以将其
exceptionMsg视为前端中的键,以显示正确的
i18n消息或将其按原样显示给用户(在这种情况下,我们使用更具描述性的消息)。
现在,当一切正常时,我们将执行以下操作:
{ "status" : "OK", "data" : {(...)} }Data元素是可选的。我们可以发送任何需要通知前端的信息,或者完全跳过它。
最后一种情况是您的-验证错误。在这种情况下,我们通常发送以下内容:
{ "status" : "VALIDATION_FAILED", "errors" : [ "fieldName" : "username", "errorCode" : "validation.requiredField", "errorMsg" : "Username is required."] }显然,API客户端将在正确的字段中接收到验证失败的信息-
有关错误原因的确切详细信息。当然
errors是一个数组(或
List),所以我们总是根据需要提供尽可能多的细节。
我该怎么做?
这些对象很简单,就是简单的POJOS,可以使用Jackson将其转换为JSON。这给了我无限可能的JSON表示形式。我正在做的是准备代表验证错误的POJO(例如),并将其添加
Model到我的
ModelAndView实例中。然后,我仅依靠Spring进行正确的JSON封送处理。
就您而言
@ResponseBody,您的
Post实例具有注释,据我所知您将无法执行此操作。您的设置是说“好吧,无论发生什么情况-
始终返回Post实例”。您应该做的是将其替换为simple
ModelAndView,并
Model根据验证为其提供适当的信息,并将其返回给客户端API。



