【问题标题】:How to establish communication between 2 restful apps?如何在 2 个 restful 应用程序之间建立通信?
【发布时间】:2013-07-17 20:34:28
【问题描述】:

我有两个 web 应用程序,旨在通过 JSON 公开 RESTful 服务,它们都是使用 SpringMVC + Jackson 用 Ja​​va 编写的。

第一个应用更像是一个代理,只是将请求转发给第二个应用,后者拥有真正的业务逻辑(不幸的是,我不能放弃其中任何一个)。

restful 端点看起来很像这样:

@Controller
@RequestMapping("rest")
public class ProxyController {
    @RequestMapping(value = "download", method = RequestMethod.POST, produces="application/json", consumes="application/json")
    @ResponseBody
    public DownloadResponse download() {
        // invoke BackendController by some mean
    }
}

@Controller
@RequestMapping("rest")
public class BackendController {
    @RequestMapping(value = "download", method = RequestMethod.POST, produces="application/json", consumes="application/json")
    @ResponseBody
    public DownloadResponse download() {
        // do some business logic
        return new DownloadResponse();
    }
}

我的第一个想法是使用 HttpClient 将 POST 从 ProxyController 触发到 BackendController,我想它会很有效。

我想知道是否有人会想出一个更好的主意。有谁知道 SpringMVC 是否会让生活更轻松一些?

非常感谢任何cmets

【问题讨论】:

  • 如果您不能将它们合并在一起或摆脱其中之一,我会说您正在通过让您的代理服务创建一个 HttpClient 并发布到您的后端服务来朝着正确的方向前进。跨度>
  • Spring有一个REST客户端API:static.springsource.org/spring/docs/3.2.x/…

标签: java json rest spring-mvc


【解决方案1】:

我听从了 JB Nizet 的建议,看起来好多了!非常感谢您的建议!

这是最终代码:

public class ProxyController {
    public DownloadResponse download() {
        RestTemplate template = new RestTemplate();
        return template.postForObject("http://<backend-url>/rest/download.do", request, DownloadResponse.class);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多