| description | HttpEffect route builder based on IxMonad |
|---|
import { r } from '@marblejs/http';r namespace function. Creates pipeable RouteEffect builder.
pipe :: ...Arity<IxBuilder, IxBuilder> -> RouteEffect{% hint style="warning" %}
r.pipe builder pays attention to the order of applied operators.
{% endhint %}
const example$ = r.pipe(
r.matchPath('/'),
r.matchType('GET'),
r.use(middleware_1$),
r.useEffect(req$ => req$.pipe(
// ...
)),
r.use(middleware_2$), // ❌ type error!
);
// or
const example$ = r.pipe(
r.matchType('GET'),
r.matchPath('/'), // ❌ type error!
r.use(middleware_1$),
r.use(middleware_2$),
r.useEffect(req$ => req$.pipe(
// ...
)),
);Correct order:
<optional> applyMetamatchPathmatchTypeuse[...]useEffectapplyMeta[...]
r namespace function. Matches request path for connected HttpEffect.
matchPath :: string -> IxBuilder -> IxBuilder| parameter | definition |
|---|---|
| path | string |
r namespace function. Matches HTTP method type for connected HttpEffect.
matchType :: HttpMethod -> IxBuilder -> IxBuilder| parameter | definition |
|---|---|
| path | HttpMethod |
r namespace function. Registers HTTP middleware with connected HttpEffect.
use :: HttpMiddlewareEffect -> IxBuilder -> IxBuilder| parameter | definition |
|---|---|
| middleware | HttpMiddlewareEffect |
r namespace function. Registers HttpEffect.
useEffect :: HttpEffect -> IxBuilder -> IxBuilder| parameter | definition |
|---|---|
| effect | HttpEffect |
r namespace function. Applies metadata to connected HttpEffect.
applyMeta :: RouteMeta -> IxBuilder -> IxBuilder| parameter | definition |
|---|---|
| meta | RouteMeta |
RouteMeta attributes:
| parameter | type | definition |
|---|---|---|
name |
<optional> string |
route/effect name |
continuous |
<optional> boolean |
enables continuous mode |
overridable |
<optional> boolean |
if true, the route can be overrode by another route |
import { r } from '@marblejs/http';
const example$ = r.pipe(
r.applyMeta({ continuous: true }),
r.matchPath('/'),
r.matchType('GET'),
r.use(middleware_1$),
r.use(middleware_2$),
r.useEffect(req$ => req$.pipe(
// ...
)),
r.applyMeta({ meta_1: /* ... */ }),
r.applyMeta({ meta_1: /* ... */ }),
);