最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何禁用NestJs缓存API响应

IT培训 admin 12浏览 0评论

如何禁用NestJs缓存API响应

我有一个正常的NestJs应用程序。我有几个API。最近,我注意到当我使用Postman测试它们时,响应被缓存了。

例如

I hit API-1 ... it gives me a response. 
I hit API-2 ... it gives me the response plus the previous response.

是否有禁用此功能的调整?

提前感谢。

这是返回正常响应的API-1。

这是API-2,它返回以前的API-1的响应

回答如下:
@Controller({path: "product",scope: Scope.REQUEST})

我认为这就是问题。由于节点是单线程的,因此它没有处置我的较早的实例,并且一次又一次地使用相同的响应变量。因此,我的API-1保存了对名为RESPONSE的变量的响应。

在下一个请求时,API-2使用了相同的变量RESPONSE。

RESPONSE变量结构是这样的-

{
   status: bool,
   message: string,
   data: object
}

API-1将其修改为

{
   status: true,
   message: "Done",
   data: {"key":"value"}
}

但是,API-2仅使用前两个键。

{
   status: true,
   message: "Not done",
   data: {"key":"value"}
}

因此获得了上一个请求的第三个data键。

理想情况下,这不会发生。但是在应用范围之后,它就解决了。

https://docs.nestjs/fundamentals/injection-scopes

控制器也可以具有范围,该范围适用于所有请求方法在该控制器中声明的处理程序。像提供者范围一样,范围控制器的寿命声明其寿命。对于请求范围控制器,为每个入站请求创建一个新实例,并且请求完成处理后,将进行垃圾收集。

如何禁用NestJs缓存API响应

我有一个正常的NestJs应用程序。我有几个API。最近,我注意到当我使用Postman测试它们时,响应被缓存了。

例如

I hit API-1 ... it gives me a response. 
I hit API-2 ... it gives me the response plus the previous response.

是否有禁用此功能的调整?

提前感谢。

这是返回正常响应的API-1。

这是API-2,它返回以前的API-1的响应

回答如下:
@Controller({path: "product",scope: Scope.REQUEST})

我认为这就是问题。由于节点是单线程的,因此它没有处置我的较早的实例,并且一次又一次地使用相同的响应变量。因此,我的API-1保存了对名为RESPONSE的变量的响应。

在下一个请求时,API-2使用了相同的变量RESPONSE。

RESPONSE变量结构是这样的-

{
   status: bool,
   message: string,
   data: object
}

API-1将其修改为

{
   status: true,
   message: "Done",
   data: {"key":"value"}
}

但是,API-2仅使用前两个键。

{
   status: true,
   message: "Not done",
   data: {"key":"value"}
}

因此获得了上一个请求的第三个data键。

理想情况下,这不会发生。但是在应用范围之后,它就解决了。

https://docs.nestjs/fundamentals/injection-scopes

控制器也可以具有范围,该范围适用于所有请求方法在该控制器中声明的处理程序。像提供者范围一样,范围控制器的寿命声明其寿命。对于请求范围控制器,为每个入站请求创建一个新实例,并且请求完成处理后,将进行垃圾收集。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论