使用 graphql 查询 Springboot rest api 响应

问题描述 投票:0回答:1

是否可以查询作为 Rest 端点响应的 Json 并过滤掉所需的字段? 来自 springboot rest 端点的示例 Json 响应 -> api/getProductDetails 如下,

{
  "account": "JV-013",
  "productDetails": [
    {
      "productId": 1,
      "productName": "birew",
      "productVersion": [
        "v1.0",
        "v2.0"
      ],
      "productOwner": [
        {
          "ownerName": "John",
          "ownerMail": "[email protected]"
        },
        {
          "ownerName": "Pav",
          "ownerMail": "[email protected]"
        }
      ]
    },
    {
      "productId": 1,
      "productName": "rowa",
      "productVersion": [
        "v1.0",
        "v2.0"
      ],
      "productOwner": [
        {
          "ownerName": "John",
          "ownerMail": "[email protected]"
        },
        {
          "ownerName": "Rias",
          "ownerMail": "[email protected]"
        }
      ]
    }
  ]
}

使用另一个休息端点或修改现有的端点,我想使用 graphql 过滤掉响应,例如,如果我只想要 productOwner 和 OwnerName 字段单独的所有产品/单一产品的详细信息,我的响应应该在下面

{
  "productDetails": [
    {
      "productId": 1,
      "productOwner": [
        {
          "ownerName": "John"
        },
        {
          "ownerName": "Pav"
        }
      ]
    },
    {
      "productId": 1,
      "productOwner": [
        {
          "ownerName": "John"
        },
        {
          "ownerName": "Rias"
        }
      ]
    }
  ]
}

有人可以帮忙吗

我尝试使用 graphql 端点。但是使用springboot rest endponit是否可以实现

java spring-boot spring-restcontroller
1个回答
0
投票

只有 GraphQL 将允许客户端完全驱动哪些字段将出现在响应中。

对于典型的 Spring MVC 应用程序,您可以使用 JSON Views 以不同方式序列化您的对象。现在与 GraphQL 不同,客户端将无法使用请求 DSL 选择响应内容。您可以使用不同的控制器方法来选择 JSON 视图:

  • 通过改变请求路径
  • 需要请求参数
  • 使用不同的自定义媒体类型,如
    application/vnd.product.light+json
    application/vnd.product+json
© www.soinside.com 2019 - 2024. All rights reserved.