如何制作apollo服务器预处理器

问题描述 投票:0回答:1

是否有一种方法可以为apollo服务器添加预处理程序,以便从预处理程序中引发apollo将捕获并以apollo格式作为响应发送的错误?也许有一个帮助格式化错误的响应者?

我如何使用自定义getGqlErr帮助程序来做到这一点,它将获得现有错误或生成它:

onst apolloHandler = apolloServer.createHandler({ path: '/api/graphql' })

const apiHandler = async (req: NextApiRequest, res: NextApiResponse): Promise<void> => {
  try {
    await prehandler({ req, res } as Ctx)
  } catch (e) {
    res.setHeader('Content-Type', 'application/json')
    res.end(
      JSON.stringify({
        errors: [
          {
            message: 'Prehandler Error',
            extensions: {
              langsMsg: getGqlErr(e),
              code: 'prehandler custom error',
            },
          },
        ],
      })
    )
    return
  }

  apolloHandler(req, res)
}
apollo apollo-server
1个回答
0
投票

可以在上下文函数中完成。

const apolloServer = new ApolloServer({
  schema,
  formatError: (err): any => {
    console.log(err)
    return err
  },
  async context(ctx: Ctx): Promise<Ctx> {
    await prehandler(ctx)

    return ctx
  },
})
© www.soinside.com 2019 - 2024. All rights reserved.