客户端需要我想通过GraphQL响应提供的特定JSON结构。
不幸的是,我必须摆脱顶级的“数据”字段,并弄平该客户端的响应。
解析器有办法做到这一点吗?
发件人:
{
"data" : {
"myKey":
{...}
}
}
收件人:
{
"myKey":
{...}
}
谢谢!
答案 0 :(得分:2)
通过使用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与为显式使用GraphQL API设计的大多数客户端库不兼容。第二,它使您不必将错误(验证或其他方式)注入到实际数据中,或者完全将它们排除在外。
很难想象这样一种场景,即客户端应用程序不应该从响应中提取数据-如果您在特定的框架上遇到困难,那么听起来很不错这样的问题!