#graphql #graphql-spqr
#graphql #graphql-spqr
Вопрос:
У меня есть базовый класс сущностей Java.
public class Result {
String resultTitle;
String resultDecription;
}
Этот класс возвращается в запросе GraphQL
@GraphQLQuery(name = "getResult")
public Result getResult() {
Result result = //get result, e.g. from DB
return resu<
}
Пока это работает нормально. Теперь я хочу вернуть один дополнительный атрибут в запросе GraphQL. Но вычисление этого дополнительного атрибута обходится очень дорого. Поэтому я хочу вернуть его только тогда, когда клиент GraphQL действительно запрашивает его в своем запросе следующим образом:
query { getResult() { resultTitle resultDecription } }
<== не выполняйте дорогостоящий расчетquery { getResult() { resultTitle resultDecription costlyAdditionalProp } }
<== ВЫПОЛНИТЕ дорогостоящий расчет
Можно ли это сделать с помощью graphql-spqr?
Ответ №1:
О, это было на самом деле довольно просто. Просто нужно было найти правильный пример из graphql-spqr-examples.
@GraphQLQuery(name = "costlyAdditionalProp ")
public Long getCostlyAdditionalProp (@GraphQLContext Result result) {
return calculationService.doCalculation(result);
}
Комментарии:
1. Да, это правильный способ. В SPQR практически нет документации, поэтому обнаружение функций сложнее, чем нужно. В общем, лучший способ обойти тесты, так как большинство (все?) Но иногда тесты слишком запутаны, чтобы правильно продемонстрировать концепцию…