У меня есть API, который при передаче недопустимого токена авторизации отвечает следующим образом:
Несанкционированный ответ:
{
"status": "failure",
"message": "Unauthorized"
}
Но когда передается действительный токен, он отвечает массивом объектов, каждый из которых представляет документ следующим образом:
Авторизованный ответ:
[{
"_id": "5bd8f520e68ba2003ec9f528",
"user": "5bd8f50cced689002769d254",
"title": "A title for a document",
"content": "Some content for a document",
}, {
"_id": "5bd8f520e68ba2003ec9f528",
"user": "5bd8f50cced689002769d254",
....
}]
Как изящно обрабатывать сообщения об ошибках в GraphQL, когда они
происходят из моих микросервисов работает экспресс? и как мне охватить изменение структуры данных в ответе?
Мой резольвер:
const getDocuments = async context => {
const config = {
headers: {
Authorization: context.token
}
};
try {
return await axios
.get("http://document_service:4000/v1/documents", config)
.then(response => {
return response.data;
})
.catch(error => {
return error.data;
});
} catch (err) {
return err;
}
};
const Query = {
docServiceGetDocs: (obj, args, context) => getDocuments(context)
};
response.data вернет либо массив документов, либо объект со статусом и сообщением.
Моя схема:
type getDocuments {
_id: String
user: String
title: String
content: String
}
type Query {
docServiceGetDocs: [getDocuments]
}
[getDocuments] Я предполагаю, что это ожидает массив объектов, но я не уверен, что делать, если я получу несанкционированный ответ как объект.
Я использую сервер Apollo 2