Технически * возможно, используя опцию formatResponse
, переданную в конструктор ApolloServer
:
const formatResponse = ({ data, errors }) => data
const server = new ApolloServer({ typeDefs, resolvers, formatResponse })
или сделать это для конкретного запроса (например,status
), вы можете сделать:
const formatResponse = res => {
if (res.data && res.data.status) return res.data
return res
}
Тем не менее, я бы настоятельно рекомендовал против такого подхода по двум основным причинам.Во-первых, это нарушает спецификацию, что делает ваш API несовместимым с большинством клиентских библиотек, предназначенных для явной работы с API-интерфейсами GraphQL.Во-вторых, это оставляет вам необходимость либо вносить ваши ошибки (валидацию или иным образом) в ваши фактические данные где-либо, либо вообще их исключать.
Трудно представить сценарий, когда извлечение данных из ответа не должноне будет сделано клиентским приложением - и если у вас есть трудности с этим в конкретной среде, это звучит как хороший дополнительный вопрос!