首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过幂等键在NestJS中实现幂等性?

如何通过幂等键在NestJS中实现幂等性?
EN

Stack Overflow用户
提问于 2022-01-25 20:57:58
回答 1查看 482关注 0票数 1

我已经了解到幂等请求必须返回相同的响应,因为相同的请求发送。但不太确定如何在Nestjs体系结构中实现这一点?如果已经创建了资源并识别了重复请求,则应返回此资源。我怀疑逻辑一定是在服务水平..。

我尝试过使用拦截器,但据我所知,它们只能处理请求。我的意思是,我不能做“嘿,我知道这个请求,所以返回这个存储的数据,不要处理它两次”。

不过,好吧,这是middlewares。我可以在主处理请求之前发送响应。但在这种情况下,我不能缓存/存储请求的响应.仅仅因为有了middlewares,我就无法访问响应对象。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-27 15:45:57

通过定义幂等HTTP方法(请求的结果是

HTTP方法是幂等的,如果一个相同的请求可以在一行中发出一次或几次,并且效果相同,同时使服务器处于相同的状态。

因此,缓存并不是使方法处理程序幂等的原因,而是它所做的操作。

如果您想缓存请求的结果,可以使用nestjs built CacheInterceptor。在全局、每个控制器甚至每个方法处理程序(与每个拦截器相同)中使用它。

首先将缓存模块导入到所需的模块(或根模块并使其为全局的) CacheModule.register({ isGlobal: true, }),然后使用@UseInterceptor(CacheInterceptor)修饰控制器/方法处理程序。

全局使用拦截器可以通过几种方式完成,但直接执行的是简单的app.useGlobalInterceptors(new CacheInterceptor())

注意:它只在开箱即用的情况下缓存GET请求,因此如果需要其他请求,可以扩展它以添加逻辑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70855591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档