gpt4 book ai didi

GraphQL:成功突变后如何发出警告?

转载 作者:行者123 更新时间:2023-12-04 18:20:54 25 4
gpt4 key购买 nike

假设我有一个createPost突变,它将插入一个新帖子。在典型的应用程序中,该突变可以:

  • 成功,返回Post
  • 失败,抛出一个错误(我使用apollo-errors来处理)。

  • 我要实现的是一个中间场景,在该场景中,突变成功(返回 Post);但也会以某种方式向用户返回警告(例如 Your post is similar to post XYZ或类似内容)。

    实现此目的的最佳GraphQL模式是什么?将 warning字段添加到 Post类型似乎有点怪异,但是我又不确定如何在相同的突变中同时返回 PostWarning?有任何想法吗?

    (请注意,我以这种情况为例,我对返回额外的突变后数据的一般模式感兴趣,而不是专门查找类似的帖子)

    最佳答案

    我所有的变异都返回包装的有效载荷类型,而不是单个值类型(例如,您的情况下为Post),除非有真正的系统错误,否则我也绝不会抛出GraphQL -如果这是用户输入的结果或其他原因预期的情况下,我将其建模为返回类型。

    返回包装有效载荷通常被认为是最佳做法,因为a)您的突变应返回图表中可能已更改的所有内容的入口点(不仅是新帖子),b)您可以轻松地向其中添加新字段稍后的返回类型。

    请记住,变异本质上是一个函数,它吸收一些输入数据和当前图形,并返回一个新图形。考虑类似REST的CRUD操作通常是一个错误。

    type CreatePostError = {
    // Whatever you want
    }

    type CreatePostSuccess = {
    post: Post!
    warning: String
    }

    union CreatePostPayload = CreatePostSuccess | CreatePostError

    mutation {
    // Other mutations
    createPost(/* args /*): CreatePostPayload
    }

    关于GraphQL:成功突变后如何发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868843/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com