Skip to content

Commit c3685da

Browse files
authored
docs: clarify that request() middlewares replace session middlewares (#11674)
1 parent e8c5252 commit c3685da

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

docs/client_middleware_cookbook.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,29 @@ Using both of these together in a session should provide full SSRF protection.
9898
Best Practices
9999
--------------
100100

101+
.. important::
102+
103+
**Request-level middlewares replace session middlewares**: When you pass ``middlewares``
104+
to ``request()`` or its convenience methods (``get()``, ``post()``, etc.), it completely
105+
replaces the session-level middlewares, rather than extending them. This differs from
106+
other parameters like ``headers``, which are merged.
107+
108+
.. code-block:: python
109+
110+
session = ClientSession(middlewares=[middleware_session])
111+
112+
# Session middleware is used
113+
await session.get("http://example.com")
114+
115+
# Session middleware is NOT used, only request middleware
116+
await session.get("http://example.com", middlewares=[middleware_request])
117+
118+
# To use both, explicitly pass both
119+
await session.get(
120+
"http://example.com",
121+
middlewares=[middleware_session, middleware_request]
122+
)
123+
101124
1. **Keep middleware focused**: Each middleware should have a single responsibility.
102125

103126
2. **Order matters**: Middlewares execute in the order they're listed. Place logging first,

0 commit comments

Comments
 (0)