問題
PaginationQueryParser.parse() が ?limit=abc や ?offset=xyz のような非整数クエリパラメータを受け取ると ValueError が発生し、ErrorHandlerMiddleware に 500 として処理される。
```python
src/nene2/http/pagination.py
limit = int(params.get("limit", default_limit)) # ValueError が伝播する
offset = int(params.get("offset", 0)) # 同上
```
期待する動作
?limit=abc → 422 Unprocessable Entity (ValidationException)
実際の動作
?limit=abc → 500 Internal Server Error
修正方法
int() 変換を try-except で包み、ValueError を ValidationException に変換する。
```python
def _parse_int(value: str, field: str) -> int | ValidationError:
try:
return int(value)
except ValueError:
return ValidationError(field=field, message=f"{field} must be an integer.", code="invalid")
```
影響
nene2.http.PaginationQueryParser を使う全エンドポイント(フレームワークレベルのバグ)
問題
PaginationQueryParser.parse()が?limit=abcや?offset=xyzのような非整数クエリパラメータを受け取るとValueErrorが発生し、ErrorHandlerMiddlewareに 500 として処理される。```python
src/nene2/http/pagination.py
limit = int(params.get("limit", default_limit)) # ValueError が伝播する
offset = int(params.get("offset", 0)) # 同上
```
期待する動作
?limit=abc→ 422 Unprocessable Entity (ValidationException)実際の動作
?limit=abc→ 500 Internal Server Error修正方法
int()変換を try-except で包み、ValueErrorをValidationExceptionに変換する。```python
def _parse_int(value: str, field: str) -> int | ValidationError:
try:
return int(value)
except ValueError:
return ValidationError(field=field, message=f"{field} must be an integer.", code="invalid")
```
影響
nene2.http.PaginationQueryParserを使う全エンドポイント(フレームワークレベルのバグ)