1
This commit is contained in:
@@ -3,7 +3,7 @@ import json
|
||||
import logging
|
||||
|
||||
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
|
||||
from fastapi import Request, Response
|
||||
from fastapi import HTTPException, Request, Response
|
||||
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
|
||||
|
||||
from app.config import settings
|
||||
@@ -98,6 +98,14 @@ class RequestEncryptMiddleware(BaseHTTPMiddleware):
|
||||
status_code=response.status_code,
|
||||
headers={"X-Encrypted": "true", "Content-Type": "application/json"},
|
||||
)
|
||||
except HTTPException as http_exc:
|
||||
# BaseHTTPMiddleware 中 call_next 抛出的 HTTPException 会直接传播,
|
||||
# 这里捕获后返回对应状态码的响应,避免被外层 except Exception 吞掉
|
||||
return Response(
|
||||
content=json.dumps({"detail": http_exc.detail}, ensure_ascii=False),
|
||||
status_code=http_exc.status_code,
|
||||
headers={"Content-Type": "application/json"},
|
||||
)
|
||||
except Exception:
|
||||
logger.exception("Request decryption failed")
|
||||
return Response(
|
||||
|
||||
@@ -93,7 +93,7 @@ async def create_invoice(
|
||||
for o in occupied
|
||||
)
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
status_code=status.HTTP_409_CONFLICT,
|
||||
detail=details,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user