Libreria di queriesArricchire dati da un'API esterna
Arricchire dati da un'API esterna
Se dobbiamo recuperare dati da un'API esterna, ma dobbiamo modificare i risultati in qualche modo (ad esempio fornendo un valore predefinito quando un campo è vuoto), possiamo usare Gato GraphQL per implementare un gateway API che trasforma le voci secondo le nostre esigenze.
Ad esempio, quando si invoca l'endpoint REST API /users di un sito WordPress, possiamo aggiungere un valore predefinito quando il campo url è vuoto, e una proprietà aggiuntiva link con il codice HTML:
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
)
}