GraphQL描述突变中的成功消息

GraphQL描述突变中的成功消息,graphql,graphql-js,express-graphql,Graphql,Graphql Js,Express Graphql,目前,在GraphQL JS实现中,没有标准的方法返回来自突变的描述性成功消息,例如“User created successfully”等。我的问题有两个部分: 我的想法是,从API返回成功消息是有益的。这样,消息可以在不同的客户端(例如web和移动)之间统一。客户端不必为每个API调用实现自定义消息。但我不确定最佳实践是什么。从突变调用返回描述性成功消息(除了增加响应大小之外)有什么缺点吗 如果我决定这样做,GraphQLJS中是否有标准的方法来实现这一点 例如,是否可以取回类似以下内容的内

目前,在GraphQL JS实现中,没有标准的方法返回来自突变的描述性成功消息,例如“User created successfully”等。我的问题有两个部分:

  • 我的想法是,从API返回成功消息是有益的。这样,消息可以在不同的客户端(例如web和移动)之间统一。客户端不必为每个API调用实现自定义消息。但我不确定最佳实践是什么。从突变调用返回描述性成功消息(除了增加响应大小之外)有什么缺点吗

  • 如果我决定这样做,GraphQLJS中是否有标准的方法来实现这一点

  • 例如,是否可以取回类似以下内容的内容:

    {
      data: {
        mutationName: {var1:"val1"}
      },
      messages: {
        mutationName:"User created successfully"
      }
    }
    
    不这样做的理由 现在有相当数量的客户机代码取决于返回结果的形状。如果你想以相当大的努力来实现你的想法,为了从你的改变中获益,你需要付出这些代价

    为什么要像今天这样坚持使用语言规范 同时,您想要实现的是(如果我理解正确的话)在当前规范中完全可以实现的

    问题的有效解决方案 为什么不这样做(我们将让变异成为用户创建):

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

    如果你真的必须。。。 (来源:)


    至少在
    expressgraphql
    中,有一种方法可以将
    扩展传递给它:

    谢谢你的回答。这不会使现有客户机无效,因为响应的形状不会改变-它通过添加额外的“消息”字段得到增强。我曾考虑过类似于您的解决方案,但我们对此并不满意,因为这意味着为每种类型创建一个新类型。我们最终使用了formatResponse选项。我会在这里分享一旦它准备好并测试。
    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