From c95c2e08ce7b65d2c92c5cb8ca45203eaa5a26de Mon Sep 17 00:00:00 2001 From: hideyukiMORI Date: Tue, 19 May 2026 22:26:59 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=E3=83=9F=E3=83=89=E3=83=AB=E3=82=A6?= =?UTF-8?q?=E3=82=A7=E3=82=A2=E5=BC=95=E6=95=B0=E4=B8=80=E8=A6=A7=E3=81=A8?= =?UTF-8?q?=E9=80=86=E9=A0=86=E3=83=AB=E3=83=BC=E3=83=AB=E3=82=92=E3=83=AA?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=83=AC=E3=83=B3=E3=82=B9=E3=81=AB=E8=BF=BD?= =?UTF-8?q?=E8=A8=98=20(#65)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 各ミドルウェアの add_middleware キーワード引数・デフォルト値と Starlette の逆順適用ルール、ThrottleMiddleware の条件分岐パターンを追記。 Co-Authored-By: Claude Sonnet 4.6 --- docs/reference/framework-modules.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/reference/framework-modules.md b/docs/reference/framework-modules.md index b84c9e3..e58d1d4 100644 --- a/docs/reference/framework-modules.md +++ b/docs/reference/framework-modules.md @@ -136,6 +136,32 @@ app.add_middleware( | `RequestSizeLimitMiddleware` | `nene2.middleware.request_size_limit` | Reject oversized request bodies | | `ThrottleMiddleware` | `nene2.middleware.throttle` | Fixed-window rate limiting per IP | +#### `add_middleware` arguments + +Starlette applies middleware in **reverse registration order** — the last registered becomes the outermost layer. Register `ErrorHandlerMiddleware` first so it catches all exceptions from every other middleware. + +| Middleware | Keyword arguments | Default | +|---|---|---| +| `ErrorHandlerMiddleware` | `debug: bool`, `domain_handlers: list[DomainExceptionHandlerProtocol] \| None` | `False`, `None` | +| `SecurityHeadersMiddleware` | *(none)* | — | +| `RequestIdMiddleware` | *(none)* | — | +| `RequestLoggingMiddleware` | *(none)* | — | +| `RequestSizeLimitMiddleware` | `max_bytes: int` | `1_048_576` (1 MiB) | +| `ThrottleMiddleware` | `limit: int`, `window: int` | `60`, `60` | + +`ThrottleMiddleware` has no `enabled` flag — wrap with `if settings.throttle_enabled:` to disable it: + +```python +# Correct registration order (innermost → outermost) +app.add_middleware(ErrorHandlerMiddleware, debug=settings.app_debug, domain_handlers=[...]) +app.add_middleware(SecurityHeadersMiddleware) +app.add_middleware(RequestIdMiddleware) +app.add_middleware(RequestLoggingMiddleware) +app.add_middleware(RequestSizeLimitMiddleware, max_bytes=settings.max_body_size) +if settings.throttle_enabled: + app.add_middleware(ThrottleMiddleware, limit=settings.throttle_limit, window=settings.throttle_window) +``` + --- ## nene2.auth