如何避免在错误响应中将错误集合包装在 Apollo Server V2 的错误对象中
How to avoid wrapping errors collection in a error object in Apollo Server V2 in error response
我们正在将 Apollo Graphql Server v1 项目迁移到 v2。
我们注意到错误响应格式发生了变化。
在 v2 中,响应中的错误列表包含在错误对象中。
但是,在 v1 中,情况并非如此。我们希望有一个一致的标准,而不是在 v2 中引入包装行为。
我了解 GraphQL 服务可能会按照以下 link 通过扩展提供额外的字段。
Link: https://graphql.github.io/graphql-spec/June2018/#sec-Errors
我已经测试了 Apollo GraphQL V2,这就是它在那里的实现方式。
在 v1 中符合预期。
在 v1 中,我们看到错误响应如下,
{
"errors": [
{
"message": "Field \"announcement\" must not have a selection since type \"String\" has no subfields.",
"locations": [
{
"line": 2,
"column": 16
}
]
}
]
}
在 v2 中,我们看到错误响应如下,
{
"error": {
"errors": [
{
"message": "Field \"announcement\" must not have a selection since type \"String\" has no subfields.",
"locations": [
{
"line": 2,
"column": 16
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED",
"exception": {
"stacktrace": [
...
]
}
}
}
]
}
}
在 v1 错误响应中,错误列表未包含在错误对象中。在 v2 中,它被包裹在错误对象中。
但是,我的问题是为什么 错误列表 包含在 v2 中的 错误对象 中。
在 v1 中,响应中只有错误列表。
我们遵循所有服务(包括 REST 和非 REST)的标准以具有标准格式,并且按照 v1 版本。但是,现在我们看到它已经被包裹在一个错误对象中。
有什么方法可以配置 Apollo Server 不将错误列表包装在错误对象中。
此行为在版本 2 中没有改变。Apollo Server 产生 spec-compliant 响应并且不会 不会 将任何产生的错误包装在 error
对象中。相反,这只是 GraphQL Playground 的 a known bug。在 2.0 版本中,Apollo Server 从 GraphiQL 过渡到 GraphQL Playground。 GraphiQL 没有同样的问题,这就是为什么这看起来像是 Apollo Server 的错误。检查网络选项卡并查看来自您的服务器的实际响应 -- 它实际上是预期的格式。
我们正在将 Apollo Graphql Server v1 项目迁移到 v2。
我们注意到错误响应格式发生了变化。
在 v2 中,响应中的错误列表包含在错误对象中。
但是,在 v1 中,情况并非如此。我们希望有一个一致的标准,而不是在 v2 中引入包装行为。
我了解 GraphQL 服务可能会按照以下 link 通过扩展提供额外的字段。 Link: https://graphql.github.io/graphql-spec/June2018/#sec-Errors
我已经测试了 Apollo GraphQL V2,这就是它在那里的实现方式。
在 v1 中符合预期。
在 v1 中,我们看到错误响应如下,
{
"errors": [
{
"message": "Field \"announcement\" must not have a selection since type \"String\" has no subfields.",
"locations": [
{
"line": 2,
"column": 16
}
]
}
]
}
在 v2 中,我们看到错误响应如下,
{
"error": {
"errors": [
{
"message": "Field \"announcement\" must not have a selection since type \"String\" has no subfields.",
"locations": [
{
"line": 2,
"column": 16
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED",
"exception": {
"stacktrace": [
...
]
}
}
}
]
}
}
在 v1 错误响应中,错误列表未包含在错误对象中。在 v2 中,它被包裹在错误对象中。
但是,我的问题是为什么 错误列表 包含在 v2 中的 错误对象 中。 在 v1 中,响应中只有错误列表。
我们遵循所有服务(包括 REST 和非 REST)的标准以具有标准格式,并且按照 v1 版本。但是,现在我们看到它已经被包裹在一个错误对象中。
有什么方法可以配置 Apollo Server 不将错误列表包装在错误对象中。
此行为在版本 2 中没有改变。Apollo Server 产生 spec-compliant 响应并且不会 不会 将任何产生的错误包装在 error
对象中。相反,这只是 GraphQL Playground 的 a known bug。在 2.0 版本中,Apollo Server 从 GraphiQL 过渡到 GraphQL Playground。 GraphiQL 没有同样的问题,这就是为什么这看起来像是 Apollo Server 的错误。检查网络选项卡并查看来自您的服务器的实际响应 -- 它实际上是预期的格式。