【问题标题】:How to return an json object when request is OK, and a json error object when failing in SpringBoot请求正常时如何返回json对象,SpringBoot失败时如何返回json错误对象
【发布时间】: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?

【问题讨论】:

    标签: java json spring-boot serialization


    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2016-01-13
        • 2013-05-02
        • 1970-01-01
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 2019-06-30
        • 2015-03-08
        • 2015-03-18
        相关资源
        最近更新 更多