小编rwe*_*sse的帖子

如何使用拦截器访问 nest.js 中的最终 GraphQL-Reponse

我已经实现了一个LoggingInterceptor应该能够访问最终 GraphQL-Response 及其数据和错误属性 + 原始请求正文和经过身份验证的用户,该用户AuthGuard之前已添加到请求中。(编辑:@jay-mcdoniel 部分解决:user并且body可以通过 访问GqlExecutionContext.create(context).getContext()

事实上,拦截器只是提供了一个完全解析的 GraphQL 对象。

@Injectable()
export class LoggingInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    return next.handle().pipe(tap(
      (allData) => console.log(allData),
      (error)=> console.log(error)));
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的拦截器级。它只是调用 RxJS-Operatortap来记录 observable 的当前值。

如果我运行以下 GraphQL-Request ...

mutation {
  login(data: { username: "admin", password: "123456" }) {
    id
    username
    token
  }
}
Run Code Online (Sandbox Code Playgroud)

...我的服务器使用以下响应正文正确回答:

{
  "data": {
    "login": {
      "id": "6f40be3b-cda9-4e6d-97ce-ced3787e9974",
      "username": "admin",
      "token": "someToken"
    } …
Run Code Online (Sandbox Code Playgroud)

node.js graphql nestjs

9
推荐指数
1
解决办法
2898
查看次数

标签 统计

graphql ×1

nestjs ×1

node.js ×1