• 没用过 graphQL ... 出人命的那个,说下我的理解,不一定可用,当个参考 ...

    如果想避免这个情况,应该让后端的逻辑是「应给尽给」的。

    比如请求的需要 a b 两个部分,但是他无权请求 b,这时候返回应该是类似于这样的:

    {
      a: { sth ... }
      b: {:error, "reason of why err"}
    }
    

    需要用一个 :error 的 atom 或者什么约定好的特殊内容的字符串做标记,后端只需要对应地告知前端哪里哪里你不能获取,但是能获取的部分应该正常返回,然后前端再决定怎么去处理这个不可获取的部分。

    比如哪怕是把 ":error, you cannot get this!" 这个字符串直接展示给用户 —— 这也好过整个页面崩了。至少不会要命,而且甚至最终用户都可以参与到排查工作的流程中来 ... (他们兴许还会觉得这很 cooool(

    总之,后端如果是设定成了(或者只能设定成)「只要某部分没法获取那么整个请求就失败啥都不给」的话,这其实是一种「越俎代庖」,它等同于是替前端规定了「如果你取到某部分是 :error 标记了那么整个获取到的数据就都该丢弃」这样一个错误处理逻辑。