4

目前在 GraphQL JS 实现中,没有从突变返回描述性成功消息的标准方法,例如“用户创建成功”等。我的问题有 2 个部分:

  1. 我的想法是从 API 返回成功消息是有益的。这样,消息可以在不同的客户端(例如 Web 和移动端)之间保持一致。客户端不必为每个 API 调用实现他们的自定义消息。但我不确定最佳做法是什么。从突变调用返回描述性成功消息是否有任何缺点(除了增加响应大小)?

  2. 如果我决定这样做,graphql-js 中是否有标准方法可以做到这一点?

例如,是否有可能取回如下内容:

{
  data: {
    mutationName: {var1:"val1"}
  },
  messages: {
    mutationName:"User created successfully"
  }
}
4

1 回答 1

4

不这样做的理由

现在有相当多的客户端代码取决于返回结果的形状。如果您要实施您的想法,您将需要分叉那些,以付出相当大的努力,以便从您的更改中受益。

坚持今天的语言规范的理由

同时,您想要实现的是(如果我理解正确的话)在当前规范内完全可以实现。

有效解决所述问题

为什么不这样做(我们将使突变成为用户创建):

schema {
  mutation: Mutation
  query: Query
}

type Mutation {
   newUser(params: NewUserInput): NewUserResult
}

input NewUserInput {
  # ...
}

type NewUserResult {
  successMessage(languageCode: LanguageCode): String
  newUser: User
}

# need to define Query, NewUserInput, User

这允许您在系统需要时返回成功消息,而无需更改 GraphQL 语言的规范。

如果你真的必须...

(来源:graphql-js 中的 graphql 错误和状态消息

至少在 中express-graphql,有一种方法可以传递extensions给它:https ://github.com/graphql/express-graphql/blob/master/src/index.js#L89

于 2017-09-28T02:33:05.297 回答