使用Apollo Server执行GraphQL多查询的错误返回行为疑问
Apollo Server 多查询操作的错误返回问题
我们在使用基于Apollo Server的GraphQL服务时,尝试在单个查询操作中同时执行多个查询,期望两个查询都能执行并返回各自结果。示例查询如下:
query Operation1 { getPosts { id title url } getBooks { id title } }
注:原示例中查询字段的写法存在语法错误,已修正为符合GraphQL规范的格式(移除了字段名后多余的冒号与大括号)
成功执行时的返回结果
当两个查询均成功时,能获取到正常的返回结果:
{ "data": { "getPosts": [{ "id": "P1", "title": "post1", "url": "/blog/post1" }], "getBooks": [{ "id": "B1", "title": "book1" }] } }
单个查询失败时的实际返回
但如果其中任意一个查询失败,返回结果仅包含错误信息,成功的查询结果不会出现在data字段中:
{ "data": {}, "errors": [ { "message": "failure message", "locations": [ { "line": 2, "column": 3 } ], "path": [ "getBooks" ], "extensions": { "code": "INTERNAL_SERVER_ERROR" } } ] }
预期的返回格式
我原本期望单个查询失败时,成功的查询结果依然保留在data中,失败的字段下包含对应的错误信息,格式如下:
{ "data": { "getPosts": [ { "id": "P1", "title": "post1", "url": "/blog/post1" } ], "getBooks": { "data": {}, "errors": [ { "message": "failure message", "locations": [ { "line": 2, "column": 3 } ], "path": [ "getBooks" ], "extensions": { "code": "INTERNAL_SERVER_ERROR" } } ] } } }
想确认这种实际返回是否属于Apollo Server的预期行为?
内容的提问来源于stack exchange,提问作者HDB
相关产品推荐
相关产品推荐

