[commits] [Wiki] created: Doc/Dev/HordeHttpServer
Ralf Lang (B1 Systems GmbH)
lang at b1-systems.de
Fri Jul 16 19:31:35 UTC 2021
rlang Fri, 16 Jul 2021 19:31:35 +0000
Created page: https://wiki.horde.org/Doc/Dev/HordeHttpServer
+ Horde_Http_Server Middleware and Request Handler
Horde_Http_Server is the Horde 6 successor to
((Doc/Dev/HordeController|Horde_Controller)) and the Horde Rampage MVC
framework of Horde 5.
It uses the PSR-compatible ServerRequest and Response implementations
from ((Doc/Dev/HordeHttp|Horde_Http)).
++ Upgrading
PreFilters and PostFilters have been redesigned to be PSR-15 Middleware.
PreFilters are middleware which either returns their own response or
modifies a request before returning it to the handler.
PostFilters are middleware which modifies a Response created by a
deeper layer of middleware or by the handler.
Controllers can be implemented either as Payload Request Handlers or
as Middleware intended to be called last in the queue.
The RequestConfiguration and SettingsExporter from the Controller
Framework wired together Prefilters, Postfilters and Controller.
They are now replaced by a special Request Handler, the
!RampageRequestHandler. It holds a stack of Middlewares and optionally
a single payload request handler.
The middleware stack can be extended by processing layers of
middleware. This allows us to delay initialisation of portions of the
Horde framework which may be needed only later.
++ Understanding Middleware and Handler
Think of middleware as a stack of layers and the Handler as its
bottom. A request enters from the top layer and progresses down. Each
layer may modify the request. Each layer may let the request pass down
to the next layer or create a response which will pass backwards up
through each layer. Each layer may in turn modify the response. The
handler finally MUST create a response out of the request as it is the
bottom layer.
The upper layers will have tasks which either need to happen first or
last. Think of routing the request, which would either add more
middleware to the bottom of the stack or set a payload handler. Think
of an error handler offering a user friendly message. Think of
authentication and authorization - they may immediately throw back an
answer and the request may never reach the bottom of the stack.
Bottom middlewares or payload handlers would represent the actual core
of your application - processing the actual data from the request and
returning content, either a UI or maybe an API response like a JSON
document.
More information about the commits
mailing list