/ / Na Spring3, Jak zadzwonić do innego kontrolera serwera w moim kontrolerze - wiosna, spring-mvc, spring-boot, spring-restcontroller

Na Spring3, Jak zadzwonić do innego kontrolera serwera w moim kontrolerze - wiosna, spring-mvc, spring-boot, spring-restcontroller

Mam 3 serwery, serwerA, serwerB, serwerC, teraz wserwerC, niektóre żądania z serweraB są przetwarzane, a następnie nie wiem, jaki jest wynik (odpowiedź), jeśli to wynikA, chcę dać wynikA do serweraA jako żądanie, w przeciwnym razie podaj serwerB.

więc co mogę zrobić w kontrolerze serwera, czy coś jest nie tak w desgin.

Proszę, powiedz mi, co mam zrobić, dzięki.

wprowadź opis obrazu tutaj

To jest mój kod.

serwerA

@RestController
public class ControllerA {

@RequestMapping(value = "/methodA", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<String> methodA(@RequestBody String something) {
// some process
return null;
}

serverB

@RestController
public class ControllerB {

@RequestMapping(value = "/methodB", consumes =MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> methodB(@RequestBody String something) {
// some process
return null;
}

serverC

@RestController
public class ControllerC {

public ResponseEntity<String> methodC(@RequestBody String someReq) {
if (checkPam(someReq)) {
**// I want to call the ControllerA in serverA.**
}else {
**// I want to call the ControllerB in serverB.**
}
return null;
}

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz po prostu użyć narzędzia RestTemplate:

@RestController
public class ControllerC {

public ResponseEntity<String> methodC(@RequestBody String someReq) {
RestTemplate restTemplate = new RestTemplate();
if (checkPam(someReq)) {
String fooResourceUrl
= "http://path-to-server-a/path-to-service-a";
ResponseEntity<String> response
= restTemplate.getForEntity(fooResourceUrl , String.class);
}else {
String fooResourceUrl
= "http://path-to-server-b/path-to-service-b";
ResponseEntity<String> response
= restTemplate.getForEntity(fooResourceUrl , String.class);
}
return null;
}

Jak widzisz, tworzę obiekt RestTemplate za pomocą nowego operatora, możesz również zadeklarować komponent RestTemplate w swoim kontekście, a następnie zautomatyzować go w klasie kontrolera.