ไลบรารี Queries
ไลบรารี Queriesกรองข้อมูลจาก API ภายนอก

กรองข้อมูลจาก API ภายนอก

หากเราจำเป็นต้องดึงข้อมูลจาก API ภายนอก แต่เราต้องการเฉพาะผลลัพธ์ที่ตรงตามเงื่อนไขบางอย่าง (เช่น มีฟิลด์ที่มีค่าไม่ว่างเปล่า) และ API ไม่รองรับการกรอง เราก็สามารถใช้ Gato GraphQL เพื่อสร้าง API gateway ที่ลบรายการที่ไม่ตรงตามเงื่อนไขของเราออกได้

ตัวอย่างเช่น เมื่อเรียกใช้ REST API endpoint /users จากเว็บไซต์ WordPress บางแห่ง เราสามารถกรองผู้ใช้ที่มีฟิลด์ 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
}