응답관리 인코딩 처리 추가
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user