在Spring3中,如何在我的控制器中调用另一台服务器的控制器

时间:2018-01-20 09:00:25

标签: spring spring-mvc spring-boot spring-restcontroller

我有3台服务器,serverA,serverB,serverC,现在在serverC中,来自serverB的一些请求是经过处理的,然后,我不知道结果是什么(响应),如果是结果A,我想要给结果A作为请求发送给serverA,否则发给serverB。

所以我可以在serverC的控制器中做些什么,或者设计中有什么问题。

请告诉我应该怎么做,谢谢。

enter image description here

这是我的代码。

serverA的

@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;
}

服务器C

@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;
}

1 个答案:

答案 0 :(得分:0)

您可以简单地使用RestTemplate:

for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        matches.append(os.path.join(root, filename)
        print(str(os.path.join(root, filename)))

如您所见,我通过new运算符实例化RestTemplate对象,您也可以在上下文中声明RestTemplate bean,然后在控制器类中自动装配它。