Как отключить Nest Js Caching API ответы - PullRequest
0 голосов
/ 05 мая 2020

У меня обычное приложение Nest Js. У меня есть пара 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-1

Это API-2, который возвращает ответ предыдущего API-1

API-1

1 Ответ

0 голосов
/ 05 мая 2020
@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.com/fundamentals/injection-scopes

Контроллеры также могут иметь область действия, которая применяется ко всем обработчикам методов запроса, объявленным в этом контроллер. Как и область действия поставщика, область действия контроллера объявляет время его существования. Для контроллера с областью запроса новый экземпляр создается для каждого входящего запроса и собирается мусором, когда запрос завершает обработку.

...