Query 库
Query 库从外部 API 过滤数据

从外部 API 过滤数据

如果我们需要从外部 API 获取数据,但只需要满足某些条件的结果(例如某字段值不为空),而 API 本身不支持过滤,则可以使用 Gato GraphQL 实现一个 API 网关,移除不满足条件的条目。

例如,在调用某个 WordPress 站点的 REST API 端点 /users 时,可以过滤掉 url 字段为空的用户:

query FilterDataFromWordPressAPI(
  # eg: https://somesite.com/wp-json/wp/v2/users/?_fields=id,name,url
  $endpointURL: URL!
) {
  usersWithWebsiteURL: _sendJSONObjectCollectionHTTPRequest(
    input: {
      url: $endpointURL
    }
  )
    # Remove users without a website URL
    @underEachArrayItem(
      passValueOnwardsAs: "userDataEntry"
      affectDirectivesUnderPos: [1, 2, 3]
    )
      @applyField(
        name: "_objectProperty"
        arguments: {
          object: $userDataEntry
          by: {
            key: "url"
          }
        }
        passOnwardsAs: "websiteURL"
      )
      @applyField(
        name: "_isEmpty"
        arguments: {
          value: $websiteURL
        }
        passOnwardsAs: "isWebsiteURLEmpty"
      )
      @if(
        condition: $isWebsiteURLEmpty
      )
        @setNull
    @arrayFilter
}