首页 > 解决方案 > 任何知名的 java 库只返回 REST API 的请求字段

问题描述

为 Spring Boot 应用程序寻找一个知名的 Java 库,其中 GET api 返回一个非常大的资源列表。为了减少响应的大小,约定之一是仅在响应中请求字段。

例子,

GET /v1/users/

{
   "data" : 
   {
     [
        {
            "name" : "User1",
            "phone" : "800-999-9999",
            "city" : "XYZ1",
            "country" : "PQR1"
        },
        {
            "name" : "User2",
            "phone" : "800-999-9999",
            "city" : "XYZ2",
            "country" : "PQR2"
         }
     ]
   }
}

对于较轻的响应版本,当字段作为查询参数传递时

GET /v1/users/?fields=name,city

{
   "data" : 
   {
     [
        {
            "name" : "User1",
            "city" : "XYZ1"
        },
        {
            "name" : "User2",
            "city" : "XYZ2"
         }
     ]
   }
}

要了解更多“教狗休息”。提到了linkedIn、facebook、twilio等的一些做法。

我遇到了“ https://github.com/monitorjbl/json-view ”。但被球队击落。

有谁知道这个的开源许可项目?使用 java spring 微服务的组织如何实现这个特性?谢谢!

标签: javarestapispring-bootmicroservices

解决方案


这是 API 设计的难点之一。您需要在使其足够通用以支持多个用例而不添加很少需要的信息之间找到正确的权衡。一种可能性是创建另一个端点。但是,这可能会导致大量端点和糟糕的 API 设计。

我不完全了解您的用例,但您可以查看GraphQL而不是 REST 。在 GraphQL 中,客户端基本上告诉服务器它想要接收什么信息。

除此之外,stackoverflow 上已经有一些帖子可能会有所帮助:


推荐阅读