Я хочу развернуть виртуальный сервис или сервис проводного макета, чтобы его можно было динамически подключать к моему приложению при отключении внешнего сервиса.
Я хочу настроить Wire Mock в моем приложении Spring Boot.
Я создал bean-класс MockServer и поместил в него код, который будет запускать фиктивный сервер при загрузке контекста приложения.
Также добавлена заглушка для нескольких URL, по которым я хочу получить результат с фиктивного сервера.
Это правильный способ сделать это?
Нужен ли перезапуск сервера для каждого запроса?
Я хочу, чтобы виртуализация или проводная имитация службы имитировали ответ для внешней службы, вызываемой в моем приложении.
Ex.
У меня есть приложение MyApp, которое вызывает внутренний ExtApp для получения некоторых данных.
Url MyApp / getData будет вызывать внутренне ExtApp / someData.
Mock ExtData с MockServer, поэтому он будет возвращен с данными mock / stub.
int PORT = 8090;
WireMockServer wireMockServer = null;
@PostConstruct
public void init() {
wireMockServer = new WireMockServer(
WireMockConfiguration.wireMockConfig().port(PORT).extensions(new DynamicTransformer()));
wireMockServer.start();
configureFor("localhost", PORT);
stubFor(get(urlPathMatching("/goalSummary/[^/]+/pin")).withHeader("accept", equalTo("application/json"))
.willReturn(aResponse().withTransformers("dynamic-transformer")));
stubFor(get(urlEqualTo("/my/resource"))
.willReturn(aResponse()
.withStatus(200)
.withBody("Some response for resource")));
}
public void reset() {
wireMockServer.resetAll();
}
@PreDestroy
public void stop() {
wireMockServer.stop();
}
public static class DynamicTransformer extends ResponseDefinitionTransformer {
@Override
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files,
Parameters parameters) {
String path = request.getUrl();
String dynamicPath = "1111"; // Pull out the dynamic part
String transformedJson = "{\"name\": \"Shyam\"}"; // Render the JSON
// string
// applicable
return new ResponseDefinitionBuilder().withHeader("Content-Type", "application/json").withStatus(200)
.withBody(transformedJson).build();
}
@Override
public String getName() {
return "dynamic-transformer";
}
}
Это правильный способ сделать в приложении динамически выбрать ExtApp или MockServer url?
Есть ли какой-нибудь лучший подход для выполнения подобных сценариев?