我正在使用apollographql / graphql-server . 服务器响应如下所示:
{"data":{...},"errors":[{"message":"...","locations":...}]}
我有两个问题:
我发现我可以抛出或返回一个Error对象,它将被推送到响应的errors数组,但是响应会在我这么做时发送 . 如何返回多个错误?
错误数组应该是应用程序还是服务器错误,只有错误?数据检查和验证错误应该放在数据对象中吗?
提前致谢!
如果您需要为响应返回多个错误,您很可能需要自己构建一个错误数组,然后在准备好后返回graphql错误 . 我在代码中做了类似的事情 . 虽然大部分时间,如果我收到错误,我会想要在那里停止它,并将问题返回给客户端 .
除了典型的“快乐路径”之外的任何事情都是graphql错误,你会想要返回错误 . 您的客户端代码将依赖于该数据,因此您希望您的客户端能够响应服务器上发生的意外问题 . 已解决或空的结果集是唯一正常传递并且不会出错的结果 . 任何其他,缺少参数,数据库错误等,你会想要返回一个错误 .
希望有所帮助! :)
看看这个:https://github.com/thebigredgeek/apollo-errors
从他们的自述文件:
创建一些错误:
import { createError } from 'apollo-errors'; export const FooError = createError('FooError', { message: 'A foo error has occurred' });
连接格式:
import express from 'express'; import bodyParser from 'body-parser'; import { formatError } from 'apollo-errors'; import { graphqlExpress } from 'apollo-server-express'; import schema from './schema'; const app = express(); app.use('/graphql', bodyParser.json(), graphqlExpress({ formatError, schema }) ); app.listen(8080)
抛出一些错误:
import { FooError } from './errors'; const resolverThatThrowsError = (root, params, context) => { throw new FooError({ data: { something: 'important' } }); }
2 回答
如果您需要为响应返回多个错误,您很可能需要自己构建一个错误数组,然后在准备好后返回graphql错误 . 我在代码中做了类似的事情 . 虽然大部分时间,如果我收到错误,我会想要在那里停止它,并将问题返回给客户端 .
除了典型的“快乐路径”之外的任何事情都是graphql错误,你会想要返回错误 . 您的客户端代码将依赖于该数据,因此您希望您的客户端能够响应服务器上发生的意外问题 . 已解决或空的结果集是唯一正常传递并且不会出错的结果 . 任何其他,缺少参数,数据库错误等,你会想要返回一个错误 .
希望有所帮助! :)
看看这个:https://github.com/thebigredgeek/apollo-errors
从他们的自述文件:
创建一些错误:
连接格式:
抛出一些错误: