# HTTP

- [Effects](/docs/http/effects.md): Effect is the main building block of the whole framework. It is just a function that returns a stream of events. Using its generic interface we can define API endpoints, event handlers or middlewares.
- [Middlewares](/docs/http/middlewares.md): In Marble.js, middlewares are streams of side-effects that can be composed and plugged-in to our request/event lifecycle to perform certain actions before reaching the designated Effect.
- [Routing](/docs/http/routing.md): Routing determines how an application responds to a client request to a particular endpoint, which is a path and a specific HTTP method (eg. GET, POST).
- [Errors](/docs/http/errors.md): Every Marble.js listener factory allows you to intercept outgoing errors via dedicated error$ handler.
- [Output](/docs/http/output.md): Every Marble.js listener factory allows you to intercept outgoing messages via dedicated output$ handler.
- [Context](/docs/http/context.md): DI is a very simple concept, which can be implemented in many different ways. Marble.js introduces a Context, which is an abstraction over Reader monad implementation of the DI system.
- [Advanced](/docs/http/advanced.md)
- [Logging](/docs/http/advanced/logging.md)
- [Validation](/docs/http/advanced/validation.md)
- [Server Events](/docs/http/advanced/server-events.md)
- [Streaming](/docs/http/advanced/streaming.md)
- [Continuous mode](/docs/http/advanced/modes.md)
