【发布时间】:2019-04-04 23:39:34
【问题描述】:
我有一个 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] 我想这需要一个对象数组,但不确定如果我将未经授权的响应作为对象处理。
我正在使用阿波罗服务器 2
【问题讨论】:
标签: node.js express error-handling graphql