GraphQL отменяет выборку данных в случае сбоя? - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь понять, достаточно ли умна (Java) реализация GraphQL, чтобы отменить запланированную выборку данных, если при выполнении одного из сборщиков выдается исключение?

Примером может служить запускодин запрос, чтобы получить все заказы для клиента.Допустим, у клиента есть 100 заказов.Это означает, что GraphQL должен сделать 100 вызовов, чтобы получить детали для каждого заказа, но на полпути во время выполнения один из вызовов завершился неудачно - 49 запросов уже выполнены, 50-й не выполнен, еще 50 запросов осталось.GraphQL прервет текущее выполнение запроса и немедленно вернет ошибку клиенту.Но он сделает оставшиеся 50 звонков или нет?

1 Ответ

1 голос
/ 25 июня 2019

Нет, он будет продолжать делать оставшиеся 50 вызовов, потому что это требуется спецификацией здесь , точка 3c:

Возвращает список, где каждый элемент списка является результатом вызова CompleteValue (innerType, fields, resultItem, variableValues) , где resultItem - это каждый элемент в результате.

Но он сообщит вам, что заказ 50 не выполнен и причина его отказа. В конце вы получите ответ JSON, подобный следующему:

{
   "data" : {
     "orders" : [
         {"id" : 1 , ..... } , 
         {"id" : 2 , ..... } , 
         {"id" : 3 , ..... } , 
         ......
      ]
   },
   "errors" : [
      {
         "message" : "Fail to get this order details due to blablab..." , 
         "path" : [ "orders", 50 ]  
      }
   ]
}
...