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
}Prev
Next