Refactor PrestashopProxyController to enhance proxy response handling and ensure consistent JSON output
This commit is contained in:
@@ -3,9 +3,12 @@ package fr.gameovergne.api.controller;
|
|||||||
|
|
||||||
import fr.gameovergne.api.service.PrestashopClient;
|
import fr.gameovergne.api.service.PrestashopClient;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.util.AntPathMatcher;
|
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;
|
import org.springframework.web.servlet.HandlerMapping;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -20,7 +23,7 @@ public class PrestashopProxyController {
|
|||||||
|
|
||||||
@GetMapping("/**")
|
@GetMapping("/**")
|
||||||
public ResponseEntity<String> proxyGet(HttpServletRequest request) {
|
public ResponseEntity<String> proxyGet(HttpServletRequest request) {
|
||||||
|
// Ex: fullPath = /api/ps/categories
|
||||||
String fullPath = (String) request.getAttribute(
|
String fullPath = (String) request.getAttribute(
|
||||||
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
|
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
|
||||||
String bestMatchPattern = (String) request.getAttribute(
|
String bestMatchPattern = (String) request.getAttribute(
|
||||||
@@ -31,8 +34,15 @@ public class PrestashopProxyController {
|
|||||||
|
|
||||||
String path = relativePath.isEmpty() ? "/" : "/" + relativePath;
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user