【问题标题】:Spring Boot to return JSON String from an external APISpring Boot 从外部 API 返回 JSON 字符串
【发布时间】:2018-01-12 10:27:32
【问题描述】:

我有一个简单的 Spring boot 项目,它使用控制器映射从项目中的类中获取硬编码信息。

例如,如果我运行请求:localhost:8080/topics,则会返回一个 JSON 响应,其中包含我之前创建的主题对象列表

我想更进一步,让一个类通过调用此 API 并解析响应来填充变量:
https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=1min&apikey=demo

我相信这可以通过创建 HTTP 连接并从输入流中读取数据在 Java 中完成,但是使用 Spring Boot 执行此操作是否更简单?我不完全确定此程序的名称,因此我无法在线找到解决方案

【问题讨论】:

    标签: json spring api spring-boot


    【解决方案1】:

    由于您使用的是 Spring Boot,因此使用 Spring 的 RestTemplate 是有意义的。它带有几个开箱即用的消息转换器,默认情况下使用 Jackson 来处理 json 内容。

    Spring 发布了一个很好的 Getting Started 页面,用于使用 RESTful Web 服务。

    但是,该服务返回的 json 内容看起来不能很好地映射到 Java 对象,因此您可能必须将其反序列化为 HashMap 才能获取所需的数据。

    【讨论】:

      【解决方案2】:

      我尝试过创建类似的东西。

      https://github.com/StanislavLapitsky/SpringSOAProxy

      这个想法是注册控制器接口。每个接口都映射到某个 URL。对于接口,会生成一个动态代理(如果实现在本地不可用)。所以开发者只需调用控制器的接口方法。为动态生成的代理调用该方法。代理使用 RestTemplate 调用远程 URL。它发送和接收 JSON 并将返回的 JSOn 反序列化为控制器返回的 POJO 对象。

      您需要声明合约 - 控制器接口和 DTO 以交换数据以及映射以了解应为每个控制器调用哪个 URL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-28
        • 2017-06-27
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 2015-07-24
        • 2020-04-08
        • 2013-11-29
        相关资源
        最近更新 更多