【问题标题】:There is any way to handle errors with correct status code in NestJS or with GraphQL?有什么方法可以在 NestJS 或 GraphQL 中使用正确的状态码来处理错误?
【发布时间】:2021-05-02 01:26:57
【问题描述】:

实际上,GQL 验证错误可以正常工作,但是当我抛出带有 nestjs 异常 的 nestjs 错误时,我没有在基本数组或内部对象上获得正确的状态代码或确切错误实际错误在数组的部门中找到。并且在浏览器网络选项卡中始终显示 200 状态,即使nestjs 抛出错误,有任何方法可以捕获由nestjs 引发的错误,并且当捕获错误时浏览器网络选项卡中的正确状态代码?

【问题讨论】:

    标签: nestjs gql


    【解决方案1】:

    Apollo Server 构造函数接受一个formatError 函数,该函数在传递回客户端的每个错误上运行。这可用于屏蔽错误以及日志记录,在 NestJS 中,您可以在 GraphQLModule 中使用此方法,主要存在于 app.module.ts

     GraphQLModule.forRoot({
          ....
          ...
          formatError: (error) => {
            const graphQLFormattedError = {
              message:
                error.extensions?.exception?.response?.message || error.message,
              code:
                error.extensions?.code || "SERVER_ERROR",
              name: error.extensions?.exception?.name || error.name,
            };
            return graphQLFormattedError;
          },
      }),
    

    【讨论】:

    • 那么如何在前端捕获这个错误呢?以及如何更改那里的状态码?
    • 如果是 GraphQL 验证错误,它将向您发送正确的状态代码,如果您在 Mutation 或 Query 中抛出错误,您将收到 HTTP 状态代码 200 但您会收到错误数组。
    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多