当前位置: 首页 > 知识库问答 >
问题:

从Spring Boot Rest API返回的响应与提供给Rest API的后端API不同

竺辉
2023-03-14

在我们的Spring Boot应用程序中,我们调用了第三方rest API,它将以以下格式向我们返回响应数据:

找到数据时将得到以下响应:

  {
    "items": [
        {
            "eventType": "ABC",
            "timestamp": "01-01-2020"
        },
        {
            "eventType": "XYZ",
            "timestamp": "02-02-2020"
        }
    ]
}

当未找到数据或数据为空时,将得到以下响应:

  {
    "items": []
}

实际上,成功后,我们的RESTAPI将返回正确格式的数据(找到的数据)。但是,当没有找到数据(空数据)时,rest api会像这样返回“{}”,而不是“{'items':[]}”,这是不正确的。

在controller中,我们调用服务类方法:

    @Autowired
    private ProductService productService;

    @GetMapping("/getProduct/{productNo}")
    public ResponseEntity<Product> getProduct(@PathVariable("productNo") String productNo) {
        logger.debug("--- getProduct() Method Called ---");
        return ResponseEntity.ok(productService.getProduct(productNo));
    }

在服务类中,我们使用以下命令调用后端url:

    @Autowired
    private RestTemplate restTemplate;

    @Override
    public Product getProduct(String productNo) {
        return restTemplate.getForObject("BACK_END_URL/" + productNo, Product.class);
    }

请让我们知道我们是否遗漏了什么或做错了什么。

感谢提前:)

共有2个答案

杜焕
2023-03-14

尝试使用此产品类别

public class Product {
     private List<Item> items;

     public Product() {
     }

     public Product(List<Item> items) {
       super();
       this.items = items;
    }



    public List<Item> getItems() {
       return items;
    }

    public void setItems(List<Item> items) {
       this.items = items;
    }
}
阎弘
2023-03-14

如果您想在项目为空时获取[],请初始化项目列表并更改产品类中的项目设置器,如下所示:

import java.util.ArrayList;
import java.util.List;

public class Product {

    private List<Item> items = new ArrayList<>();

    public Product() {
    }

    public List<Item> getItems() {
        return items;
    }

    public void setItems(List<Item> items) {
        if (items != null) {
            this.items = items;
        }
    }
}

结果:

{
    "items": []
}
 类似资料:
  • 使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png

  • 我不熟悉RESTAPI和Spring Boot。我一直在尝试使用存储员工数据的STS和MySQL创建RESTAPI。 一切似乎都很好,但是当我在Postman中发布数据时,空的行存储在MySQL和body中。 //员工控制器类 //员工存储库类 //员工服务类 //员工服务Impl

  • 我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:

  • 我对这一切都很陌生。这就是问题所在。我有一个RESTAPI,使用Spring Boot连接到MySQL。访问我的API的URL是http://localhost/videogamereview/review/(id)。每当我访问这个URL时,我都会按预期获得JSON对象。 我还有一个单独的angular项目,它通过自己的路径连接到此API。例如:HTTP:localhost:8080/angula

  • 我正在进行一个SpringBoot项目,该项目使用常规MVC机制来公开REST API。 在一个特定的GET API中,我得到了406HTTP响应。 下面是我的控制器方法的样子: AnalysisDetailResponse是使用Lombok创建的(在其他API的情况下,Lombok可以完美地工作) 我已经验证了整个响应对象的内容,它似乎是完美的。然而,响应总是406。 我需要JSON格式的响应,

  • sql语言可以囊括增删改查所有的要求 为何不直接拓展或者限制sql能力而要搞什么 restful api等等?