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
}