【问题标题】:How to consume response of one rest api in another rest API java Microservices?如何在另一个rest API java微服务中使用一个rest api的响应?
【发布时间】:2017-11-20 11:52:56
【问题描述】:

我有 2 个微服务正在运行:-

1] user 
   running on tomcat port :8081,
   database name:  user.
2] order
   running on tomcat port :8082,
   database name:  order.

我有一个用于微服务的 REST API,如下所示:-

@RequestMapping(value = "/order/getdetail", method = RequestMethod.GET,headers="Accept=application/json")
    public List registerCustomer() {
    List list=new ArrayList();
    list.add("aaa");
    list.add("aab");
    return list;
}

现在我怎样才能在用户中消费这个微产品

  @RequestMapping(value = "/user/getdetail", method = RequestMethod.GET,headers="Accept=application/json")

   // need to call REST API /order/getdetail and return list
    }   

由于我是微服务的新手,我不知道如何在微服务之间进行通信?

提前致谢。

【问题讨论】:

    标签: java rest spring-mvc microservices


    【解决方案1】:

    这是可以做到的。 Spring 提供了org.springframework.web.client.RestTemplate,它是一个 HTTP 客户端。您可以参考article 了解更多详情。它还允许您只处理 java 对象,而不是 JSON 数据。处理 Java 对象更容易。 Spring 负责对象和 JSON 数据之间的序列化和反序列化。

    例如,假设您需要向下游的 rest 端点提交一个简单的GET 请求,并以 DTO 类的形式获取响应。下面的代码可以做到这一点。

    private RestTemplate restTemplate = new RestTemplate();
    ResponseDTO responseDTO = restTemplate.getForEntity("/api/endpoint", ResponseDTO.class).getBody();
    

    【讨论】:

      【解决方案2】:

      使用可以传递消息的 HTTP 客户端。在 JAX-RS 中,您将拥有 JAX-RS 客户端。

      如果您使用MS4J from WSO2,他们会提供 * Feign 建立在 Apache HTTP 客户端之上

      对于我自己的框架app-ms,我使用 RestEasy 的 JAX-RS 实现,但使用 vert.x 作为我的 HTTP 客户端,这样我可以获得更好的性能。

      【讨论】:

        猜你喜欢
        • 2017-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        相关资源
        最近更新 更多