请求正常时如何返回json对象,SpringBoot失败时如何返回json错误对象
Posted
技术标签:
【中文标题】请求正常时如何返回json对象,SpringBoot失败时如何返回json错误对象【英文标题】:How to return an json object when request is OK, and a json error object when failing in SpringBoot 【发布时间】:2020-10-16 19:46:04 【问题描述】:我有一个方法:
@RequestMapping(value = "/Commande", method = RequestMethod.GET)
public String authorizeMeter(...)
try
MyObject result = port.commanderCollectePublicationMesures(demande);
catch (Erreur erreur)
return erreur;
当请求成功时,我会得到一个 MyObject 结果,当我捕捉到错误时,和 Erreur Object。
最后,两个响应都会被序列化,所以,都是JSON。
如果我输入:String
返回类型,编译器不喜欢这样说,我必须返回 MyObject 类型或 Erreur 类型
如果我只有一种类型( MyObject ),Springboot 会自动将其序列化为 JSON,这很棒。
但是我应该如何管理 Erreur 消息?
我是否应该始终将对象转换为 JSON?
【问题讨论】:
【参考方案1】:您可以添加ResponseEntity
作为返回类型(org.springframework.http.ResponseEntity)
return 语句应该是
return ResponseEntity.ok(result)
或
return ResponseEntity.ok(erreur)
【讨论】:
【参考方案2】:Yogesh Prajapati 答案是正确的。但是在错误情况下,我想使用另一个状态码,因为ResponseEntity.ok(..)
返回 200 状态码,这在错误的情况下不好,你可以使用一个优雅的解决方案来解决这个问题:
return ResponseEntity.badRequest().body(error);
或使用其他HttpStatus
你可以这样称呼:
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(error);
【讨论】:
以上是关于请求正常时如何返回json对象,SpringBoot失败时如何返回json错误对象的主要内容,如果未能解决你的问题,请参考以下文章
JSON 返回嵌套数组而不是对象 [Spring boot + JPA + MySQL + REST]
如何使用一个ajax请求从java servlet返回多个json对象
如何在 django 的 AJAX 请求中返回多个 JSON 对象