Skip to content

Commit 2324c65

Browse files
feat: Include ReceiveRoutePlugin in base plugins (#4220)
1 parent ce67b6f commit 2324c65

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

docs/usage/plugins/index.rst

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,31 @@ signature (their :func:`__init__` method).
121121

122122
flash_messages
123123
problem_details
124+
125+
126+
ReceiveRoutePlugin
127+
------------------
128+
129+
:class:`~litestar.plugins.ReceiveRoutePlugin` allows you to receive routes as they are registered on the application.
130+
This can be useful for plugins that need to perform actions based on the routes being added, such as generating
131+
documentation, validating route configurations, or tracking route statistics.
132+
133+
Implementations of this plugin must define a single method:
134+
:meth:`receive_route(self, route: BaseRoute) -> None: <litestar.plugins.ReceiveRoutePlugin.receive_route>`
135+
136+
The method receives a :class:`BaseRoute <litestar.routes.BaseRoute>` instance as routes are registered on the application.
137+
This happens during the application initialization process, after routes are created but before the application starts.
138+
139+
Example
140+
+++++++
141+
142+
The following example shows a simple plugin that logs information about each route as it's registered:
143+
144+
.. code-block:: python
145+
146+
from litestar.plugins import ReceiveRoutePlugin
147+
from litestar.routes import BaseRoute
148+
149+
class RouteLoggerPlugin(ReceiveRoutePlugin):
150+
def receive_route(self, route: BaseRoute) -> None:
151+
print(f"Route registered: {route.path} [{', '.join(route.http_methods)}]")

litestar/plugins/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
OpenAPISchemaPluginProtocol,
99
PluginProtocol,
1010
PluginRegistry,
11+
ReceiveRoutePlugin,
1112
SerializationPlugin,
1213
SerializationPluginProtocol,
1314
)
@@ -22,6 +23,7 @@
2223
"OpenAPISchemaPluginProtocol",
2324
"PluginProtocol",
2425
"PluginRegistry",
26+
"ReceiveRoutePlugin",
2527
"SerializationPlugin",
2628
"SerializationPluginProtocol",
2729
)

litestar/plugins/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"OpenAPISchemaPluginProtocol",
2828
"PluginProtocol",
2929
"PluginRegistry",
30+
"ReceiveRoutePlugin",
3031
"SerializationPlugin",
3132
"SerializationPluginProtocol",
3233
)

0 commit comments

Comments
 (0)