GraphQL描述突变中的成功消息
目前,在GraphQL JS实现中,没有标准的方法返回来自突变的描述性成功消息,例如“User created successfully”等。我的问题有两个部分:GraphQL描述突变中的成功消息,graphql,graphql-js,express-graphql,Graphql,Graphql Js,Express Graphql,目前,在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