Mam do wykonania "proxy" z użyciem spring boota + web oraz wiremocka.
Działać ma to tak, że pobierany jest request od nadawcy i w zależności od tego, jakiego typu http jest żądanie, ma wysłać do odpowiedniego systemu - wiremock (np. GET - system1), który zwróci mu jakąś odpowiedź.
Wykorzystać należy RestController i RestTemplate.
Nigdy nie miałem do czynienia z WireMockiem, ale rozumiem to tak, że stawiam sobie standardowy kontroler w springu, mapuje żądania przy użyciu @RequestMapping (wcześniej @RestController), następnie w ciele tego kontrolera rozpoznaję metodę i wysyłam jakieś żądanie do np. System 1(symulowanego za pomocą WireMock), który następnie coś mi tam zwraca i to np. zwracam klientowi do przeglądarki. Czy dobrze to rozumiem? Wczytuję się już którąś godzinę, w jaki sposób przy użyciu tego WireMocka to zrobić. Wszędzie poruszane są kwestie testów, ale to chyba nie o to chodzi, skoro ja chcę tylko pobrać żądanie i coś zwrócić?
public class WireMockEx {
RestTemplate restTemplate;
ResponseEntity response;
@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8080).httpsPort(8443));
@Before
public void setup() throws Exception {
restTemplate = new RestTemplate();
response = null;
}
public void exactUrlOnly() {
stubFor(get(urlEqualTo("/")).willReturn(
aResponse()
.withStatus(200)
.withHeader("Content-Type", "text/plain")
.withBody("response!")));
}
}
Ale w takim razie, jak z samego kontrolera wysłać żądanie do tego WireMocka, w jaki sposób przetworzyć je i zwrócić coś do klienta (czyli zwrócić do kontrolera javy i wyświetlić użytkownikowi)?
Bardzo proszę o jakieś wskazówki, może przykład na Githubie, bo przeglądam całego guida Wiremocka i nie mogę tam znaleźć rzeczy, która mi takie coś umożliwi.
RestTemplate
:restTemplate.getForEntity("http://localhost:8080/", String.class)
. Zastubowany serwer wiremockiem już masz