Я пытаюсь реализовать интерфейс пакетных запросов с GraphQL. Я могу получить запрос на синхронную работу без проблем, но я не уверен, как подойти, чтобы сделать результат асинхронным. По сути, я хочу иметь возможность запустить запрос и вернуть своего рода указатель на то, где будут результаты, когда запрос будет выполнен. Я хотел бы сделать это, потому что запросы иногда могут занимать довольно много времени.
В REST это тривиально. Вы возвращаете 202 и возвращаете заголовок Location, указывающий, куда клиент может go получить результат. GraphQL как спецификация, похоже, не имеет этого понятия; Похоже, что он всегда хочет, чтобы запросы обрабатывались синхронно.
Существует ли какое-либо соглашение для выполнения подобных действий в GraphQL? Мне очень нравится спецификация запроса, но я бы предпочел не оставлять клиентское HTTP-соединение открытым до нескольких минут, пока в бэкэнде выполняется большой запрос. Если что-то случится, чтобы разорвать это соединение, весь запрос нужно будет повторить, даже если сами результаты будут длительными.