Коды состояния в ответе graphql при возникновении ошибок?

#http #graphql #apollo-server

Вопрос:

Я заметил, что спецификация http-транспорта graphql очень мало говорит о кодах состояния:

https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#status-codes

в принципе, кажется, что вы должны возвращать 200 всякий раз, когда вам возвращают какие-то данные. Вы можете вернуть любой код ответа, если данные пусты или не возвращены вообще. Рекомендуется ли в таком случае возвращать другие коды статуса, кроме 200? Mercurius возвращает другие коды: https://github.com/mercurius-js/mercurius/blob/037cc1f35c3e4901d3dc219a9ef88b43ac017b0e/index.js#L567

Я не тестировал это, но я думаю, что apollo-сервер каждый раз возвращает 200. Какой из них делает это лучше? Меркурий или аполлон?

Комментарии:

1. Я думаю, что в настоящее время нет строгого правила о кодах статуса возврата. И это полностью зависит от вас, чтобы выбрать реализацию. С другой стороны — похоже, что AWS AppSync основан на apollo, и AWS является крупным «игроком». Наверное, неплохо бы пойти этим путем 🙂