reitit/doc/http/interceptors.md

23 lines
1.2 KiB
Markdown
Raw Normal View History

2018-09-07 21:05:55 +00:00
# Interceptors
2018-02-02 12:48:28 +00:00
2018-09-08 07:42:01 +00:00
Reitit also support for [interceptors](http://pedestal.io/reference/interceptors) as an alternative to using middleware. Basic interceptor handling is implemented in `reitit.interceptor` package. There is no interceptor executor shipped, but you can use libraries like [Pedestal Interceptor](https://github.com/pedestal/pedestal/tree/master/interceptor) or [Sieppari](https://github.com/metosin/sieppari) to execute the chains.
2018-02-02 12:48:28 +00:00
2018-09-02 16:40:25 +00:00
## Reitit-http
2018-02-02 12:48:28 +00:00
```clj
2018-10-21 17:37:35 +00:00
[metosin/reitit-http "0.2.4"]
2018-09-02 16:40:25 +00:00
```
2018-09-08 07:42:01 +00:00
An module for http-routing using interceptors instead of middleware. Builds on top of the [`reitit-ring`](../ring/ring.md) module having all the same features.
2018-02-02 12:48:28 +00:00
2018-09-08 07:42:01 +00:00
The differences:
2018-02-02 12:48:28 +00:00
2018-09-24 17:51:43 +00:00
* instead of `:middleware`, uses `:interceptors`.
* `reitit.http/http-router` requires an extra option `:executor` of type `reitit.interceptor/Executor`.
2018-09-08 07:42:01 +00:00
* instead of creating a ring-handler, apps can be wrapped into a routing interceptor that enqueues the matched interceptors into the context. For this, there is `reitit.http/routing-interceptor`.
2018-08-22 18:55:03 +00:00
2018-09-08 07:42:01 +00:00
## Why interceptors?
2018-08-22 18:55:03 +00:00
2018-09-08 07:42:01 +00:00
* https://quanttype.net/posts/2018-08-03-why-interceptors.html
* https://www.reddit.com/r/Clojure/comments/9csmty/why_interceptors/