Queries KütüphanesiHarici bir API'den veri zenginleştirme
Harici bir API'den veri zenginleştirme
Harici bir API'den veri almamız gerektiğinde, ancak sonuçları bir şekilde değiştirmemiz gerektiğinde (örneğin, bir alan boş olduğunda varsayılan bir değer sağlamak gibi), Gato GraphQL'i kullanarak girişleri gerektiği gibi dönüştüren bir API ağ geçidi uygulayabiliriz.
Örneğin, bir WordPress sitesinin REST API /users endpoint'ini çağırırken, url alanı boş olduğunda varsayılan bir değer ekleyebilir ve HTML kodu içeren ek bir link özelliği ekleyebiliriz:
query FilterDataFromWordPressAPI(
# eg: https://somesite.com/wp-json/wp/v2/users/?_fields=id,name,url
$endpointURL: URL!
) {
usersWithLinkAndDefaultURL: _sendJSONObjectCollectionHTTPRequest(
input: {
url: $endpointURL
}
)
# Set a default URL for users without any
@underEachArrayItem
@underJSONObjectProperty(
by: {
key: "url"
}
)
@default(
value: "https://mysite.com"
condition: IS_EMPTY
)
# Add a new "link" entry on the JSON object
@underEachArrayItem(
affectDirectivesUnderPos: [1, 2, 3, 4],
passValueOnwardsAs: "userListItem"
)
@applyField(
name: "_objectProperty",
arguments: {
object: $userListItem,
by: {
key: "name"
}
},
passOnwardsAs: "userName"
)
@applyField(
name: "_objectProperty",
arguments: {
object: $userListItem,
by: {
key: "url"
}
},
passOnwardsAs: "userURL"
)
@applyField(
name: "_sprintf",
arguments: {
string: "<a href=\"%s\">%s</a>",
values: [$userURL, $userName]
},
passOnwardsAs: "userLink"
)
@applyField(
name: "_objectAddEntry",
arguments: {
object: $userListItem,
key: "link",
value: $userLink
},
setResultInResponse: true
)
}