HTTP Інтерсептори
Інтерсептори дуже близькі по функціональності до контролерів, але вони не створюють роутів, вони прив'язуються до вже існуючих роутів. На одному роуті може працювати ціла група інтерсепторів, що запускаються один за одним. Інтерсептори - це аналог middleware в ExpressJS, але інтерсептори можуть використовувати DI. Окрім цього, інтерсептори можуть працювати до та після роботи контролера.
Враховуючи що інтерсептори роблять таку ж роботу, яку можуть робити контролери, без інтер септорів можна обійтись. Але в такому разі вам прийдеться значно частіше викликати різні сервіси в контролерах.
Як правило, інтерсептори використовують для автоматизації стандартної обробки, такої як:
- парсинг тіла запиту чи заголовків;
- валідація запиту;
- збирання та логування різних метрик роботи застосунку;
- кешування;
- і т.д.
Інтерсептори можна централізовано підключати або відключати, не змінюючи при цьому код методів контролерів, до яких вони прив'язуються. Як і контролери, інтерсептори можуть працювати в режимі injector-scoped чи context-scoped. На відміну від context-scoped, в режимі injector-scoped вони мають доступ до інжектора на рівні запиту, тому вони можуть викликати сервіси на рівні запиту. З іншого боку, в режимі context-scoped їхні інстанси створюються на рівні роуту, відповідно - для них доступні сервіси на рівні роуту, модуля чи застосунку.