From 44764a5f1495a1555bc56a760b7900e34b041840 Mon Sep 17 00:00:00 2001 From: Vincent Guillet Date: Sat, 29 Nov 2025 10:05:21 +0100 Subject: [PATCH] Refactor PrestashopProxyController to enhance proxy response handling and ensure consistent JSON output --- .../controller/PrestashopProxyController.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/fr/gameovergne/api/controller/PrestashopProxyController.java b/api/src/main/java/fr/gameovergne/api/controller/PrestashopProxyController.java index d592169..448ff9e 100644 --- a/api/src/main/java/fr/gameovergne/api/controller/PrestashopProxyController.java +++ b/api/src/main/java/fr/gameovergne/api/controller/PrestashopProxyController.java @@ -3,9 +3,12 @@ package fr.gameovergne.api.controller; import fr.gameovergne.api.service.PrestashopClient; import jakarta.servlet.http.HttpServletRequest; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.AntPathMatcher; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.HandlerMapping; @RestController @@ -20,7 +23,7 @@ public class PrestashopProxyController { @GetMapping("/**") public ResponseEntity proxyGet(HttpServletRequest request) { - + // Ex: fullPath = /api/ps/categories String fullPath = (String) request.getAttribute( HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); String bestMatchPattern = (String) request.getAttribute( @@ -31,8 +34,15 @@ public class PrestashopProxyController { String path = relativePath.isEmpty() ? "/" : "/" + relativePath; - String rawQuery = request.getQueryString(); // déjà encodée + // Query string brute, déjà encodée (display=%5Bid,name,active%5D&output_format=JSON) + String rawQuery = request.getQueryString(); - return prestashopClient.getWithRawQuery(path, rawQuery); + var prestaResponse = prestashopClient.getWithRawQuery(path, rawQuery); + + // On renvoie EXACTEMENT le même status + body, en forçant JSON + return ResponseEntity + .status(prestaResponse.getStatusCode()) + .contentType(MediaType.APPLICATION_JSON) + .body(prestaResponse.getBody()); } } \ No newline at end of file