A developer implements an idempotency decorator in a NestJS backend application to prevent duplicate POST requests. The tutorial covers creating a custom decorator, updating controllers to use it, configuring Axios interceptors for idempotency, and verifying the implementation by testing API endpoints in Postman.
Length 13:59
Captions English (Generated), Spanish (Auto-translated), French (Auto-translated), Korean (Auto-translated), Portuguese (Auto-translated), Vietnamese (Auto-translated) #nest.js #idempotency #interceptors #typescript #postman #software engineering #backend development #coding tutorial #decorators #api
0:00 All right, so in this lecture, we're finally ready to test out our new 0:03 idempotency 0:04 implementation. 0:05 In order to do this, let's go ahead and head back into our source directory, 0:09 and we have our demo controller. And inside of the upstream 0:13 controller, we're now gonna create a new endpoint to 0:17 use our idempotent interceptor. Now, in order to 0:21 actually use the idempotency interceptor, we're gonna take advantage 0:25 of NestJS decorators and, in this case, a special 0:29 decorator that they provide us that allows us to directly 0:32 invoke an interceptor before a given route. 0:35 And so let's go ahead and see how we can use this inside of 0:38 NestJS. 0:39 For this, I'm gonna create the new 0:41 idempotent.decorator.ts and make 0:45 sure we've created this inside of our HTTP directory as well. 0:49 And now inside of here, I'm gonna create a new decorator that we 0:53 will capitalize and call idempotent. 0:55 This is going to be a callback function where we now go ahead 0:59 and return applyDecorators from NestJS common, 1:03 which allows us to apply any decorator to a given route. 1:07 In this case, we can use the 1:10 useInterceptors function 1:14 from NestJS common as well 1:16 that returns a new decorator that applies all decorators provided by 1:20 param. It's essentially a way to allow us to 1:22 build new decorators or a 1:24 decorator factory encapsulating multiple decorators related with the same 1:28 feature. So all that is just short of saying this takes in the 1:32 underlying interceptor that we want to now use. 1:35 So we just have to pass in the server idempotencyInterceptor now, 1:40 which will be invoked thanks to useInterceptors, which takes in the 1:43 interceptor we want to invoke, and that returns us back the 1:47 decorator that applyDecorators then expects. 1:50 And all this will then allow the idempotencyInterceptor to 1:53 execute before and after the route through the use of our RxJS
The rest of the transcript is for members.
Sign in