응답지연시간 / 응답 status code 설정 기능 추가

This commit is contained in:
hsoh
2021-07-11 02:05:56 +09:00
parent 10b5f9fa78
commit 300a6b420c
5 changed files with 79 additions and 5 deletions
@@ -30,7 +30,8 @@ public class ApiController {
private ApiService apiService;
@SuppressWarnings("deprecation")
@RequestMapping(value = "/mock-api/**")
//@RequestMapping(value = "/mock-api/**")
@RequestMapping(value = "/{_:^(?!plugins|dist|favicon.ico).*$}/**")
public ResponseEntity<String> mockApi(HttpEntity<String> httpEntity, HttpServletRequest request,
HttpServletResponse response) {
System.out.println("==================================================");
@@ -67,7 +68,25 @@ public class ApiController {
String.format("Method(%s) not allowed", request.getMethod()));
}
}
// sleep Àû¿ë
if(api.getSleepSeconds() != null) {
int sleepSeconds = api.getSleepSeconds().intValue();
if (sleepSeconds > 0) {
try {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(String.format("Start Sleep %d Seconds.", sleepSeconds));
System.out.println("...");
Thread.sleep(sleepSeconds * 1000);
System.out.println("......");
System.out.println(String.format("Finished Sleep %d Seconds.", sleepSeconds));
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
HttpHeaders responseHeaders = new HttpHeaders();
if (StringUtils.isNotBlank(api.getResponseContentType())) {
responseHeaders.setContentType(MediaType.parseMediaType(api.getResponseContentType()));
@@ -76,8 +95,15 @@ public class ApiController {
}
assignResponseHeaders(responseHeaders, api.getResponseHeaders());
// status code Àû¿ë
int responseStatusCode = 200;
if (api.getResponseStatusCode() != null) {
responseStatusCode = api.getResponseStatusCode().intValue();
System.out.println("Response Status Code=" + responseStatusCode);
}
return new ResponseEntity<String>(assignResponseBody(api), responseHeaders, HttpStatus.OK);
return new ResponseEntity<String>(assignResponseBody(api), responseHeaders, responseStatusCode);
}
private String assignServiceValue(HttpEntity<String> httpEntity, HttpServletRequest request, String url) {
@@ -10,7 +10,9 @@ import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Positive;
@SuppressWarnings("serial")
@Entity
@@ -46,6 +48,12 @@ public class ApiInfo implements Serializable {
@Column(length = 5000)
private String responseHeaders;
@Digits(fraction = 0, integer = 3)
private Integer responseStatusCode;
@Positive
private Integer sleepSeconds;
@Column(length = 5000)
private String responseBody1;
@@ -116,6 +124,22 @@ public class ApiInfo implements Serializable {
this.responseHeaders = responseHeaders;
}
public Integer getResponseStatusCode() {
return responseStatusCode;
}
public void setResponseStatusCode(Integer responseStatusCode) {
this.responseStatusCode = responseStatusCode;
}
public Integer getSleepSeconds() {
return sleepSeconds;
}
public void setSleepSeconds(Integer sleepSeconds) {
this.sleepSeconds = sleepSeconds;
}
public String getResponseBody1() {
return responseBody1;
}
@@ -136,7 +160,8 @@ public class ApiInfo implements Serializable {
public String toString() {
return "ApiInfo [id=" + id + ", apiGroupName=" + apiGroupName + ", apiName=" + apiName + ", url=" + url
+ ", serviceValue=" + serviceValue + ", method=" + method + ", responseContentType="
+ responseContentType + ", responseHeaders=" + responseHeaders + ", responseBody1=" + responseBody1
+ responseContentType + ", responseHeaders=" + responseHeaders + ", responseStatusCode="
+ responseStatusCode + ", sleepSeconds=" + sleepSeconds + ", responseBody1=" + responseBody1
+ ", responseBody2=" + responseBody2 + "]";
}
}