응답관리 인코딩 처리 추가

This commit is contained in:
Sungpil Hyun
2024-05-28 12:18:28 +09:00
parent 9b53b9272c
commit cf86f2a11a
6 changed files with 61 additions and 10 deletions
@@ -14,5 +14,4 @@ public class ElinkTestMaster {
public static void main(String[] args) {
SpringApplication.run(ElinkTestMaster.class, args);
}
}
@@ -7,12 +7,7 @@ import com.eactive.testmaster.api.entity.MockCondition;
import com.eactive.testmaster.api.entity.MockResponse;
import com.eactive.testmaster.api.entity.MockRoute;
import com.eactive.testmaster.api.service.MockRouteService;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
@@ -21,6 +16,14 @@ import org.springframework.http.ResponseEntity;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
public class MockApiController {
@@ -66,9 +69,20 @@ public class MockApiController {
HttpHeaders responseHeaders = new HttpHeaders();
matchingResponse.getHeaders().forEach(responseHeaders::set);
String encodingCharset = StringUtils.isNotEmpty(matchingResponse.getEncodingCharset()) ? matchingResponse.getEncodingCharset() : System.getProperty("file.encoding");
if (!responseHeaders.containsKey(HttpHeaders.CONTENT_TYPE)) {
responseHeaders.add(HttpHeaders.CONTENT_TYPE, "text/plain; charset=" + encodingCharset);
} else {
String contentType = responseHeaders.getFirst(HttpHeaders.CONTENT_TYPE);
if (!contentType.contains("charset")) {
responseHeaders.set(HttpHeaders.CONTENT_TYPE, contentType + "; charset=" + encodingCharset);
}
}
request.getParams().putAll(pathVariables);
return new ResponseEntity<>(replaceParams(matchingResponse.getBody(), request.getParams()), responseHeaders, HttpStatus.valueOf(matchingResponse.getStatusCode()));
return new ResponseEntity<>(replaceParams(matchingResponse.getBody(), request.getParams(), encodingCharset), responseHeaders, HttpStatus.valueOf(matchingResponse.getStatusCode()));
}
}
}
@@ -77,11 +91,13 @@ public class MockApiController {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Not Found");
}
private String replaceParams(String responseBody, Map<String, String> params) {
private String replaceParams(String responseBody, Map<String, String> params, String encodingCharset) throws UnsupportedEncodingException {
for (Map.Entry<String, String> entry : params.entrySet()) {
responseBody = responseBody.replace("{" + entry.getKey() + "}", entry.getValue());
}
return responseBody;
byte[] sourceBytes = responseBody.getBytes(encodingCharset);
return new String(sourceBytes, encodingCharset);
}
private boolean isRouteMatch(MockRoute mockRoute, MockRequest request) {
@@ -18,6 +18,9 @@ public class MockResponseDTO {
private String defaultResponse;
private List<MockConditionDTO> conditions;
private String encodingCharset;
public int getStatusCode() {
return statusCode;
}
@@ -65,4 +68,12 @@ public class MockResponseDTO {
public void setDefaultResponse(String defaultResponse) {
this.defaultResponse = defaultResponse;
}
public String getEncodingCharset() {
return encodingCharset;
}
public void setEncodingCharset(String encodingCharset) {
this.encodingCharset = encodingCharset;
}
}
@@ -50,6 +50,8 @@ public class MockResponse {
@OneToMany(mappedBy = "mockResponse", cascade = CascadeType.ALL, orphanRemoval = true)
private List<MockCondition> conditions = new ArrayList<>();
private String encodingCharset;
public Long getId() {
return id;
}
@@ -113,4 +115,12 @@ public class MockResponse {
public void setDefaultResponse(boolean defaultResponse) {
this.defaultResponse = defaultResponse;
}
public String getEncodingCharset() {
return encodingCharset;
}
public void setEncodingCharset(String encodingCharset) {
this.encodingCharset = encodingCharset;
}
}
@@ -51,6 +51,9 @@ public class ApiRequestMigrationService {
apiRequestRepository.save(apiRequest);
});
String fileEncoding = System.getProperty("file.encoding");
System.out.println(fileEncoding);
}
}