教程学习 03-Consuming a RESTful Web Service 学习笔记

本例子是用于两个应用程序之间的数据对接。通过程序内的连接我们可以看到,通过访问链接,我们可以随机得到一些JSON数据:

  • {"type":"success","value":{"id":3,"quote":"Spring has come quite a ways in addressing developer enjoyment and ease of use since the last time I built an application using it."}}
  • {"type":"success","value":{"id":4,"quote":"Previous to Spring Boot, I remember XML hell, confusing set up, and many hours of frustration."}}

我们可以通过本例将这些数据映射到固定的对象中去。

记录

本例一共包含三个类:Quote、Value和Application。前两个用于对应JSON的数据结构进行一一对应,后一个是用于运行程序,关联映射。前两个的数据结构为:

Quote{
    String type;
    Value value{
        Long id;
        String quote;
    };
}

JSON的数据结构为:

{
    "type":"",
    "value":{
        "id":"",
        "quote":
    }
}

可见类中的数据类型是不重要的,但是变量名一定要与JSON的数据一一对应

Quote与Value

两个类的功能相同,就一并说了。都是用于映射数据,除了对其中属性都要设置Get和Set方法之外,类都需要使用@JsonIgnoreProperties(ignoreUnknown = true) 进行注释即可。

Application

Application除了主要部分多加了两个Bean注释的方法:

@Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        return builder.build();
    }

/**
 * 实现加载数据
 */
    @Bean
    public CommandLineRunner run(RestTemplate restTemplate) throws Exception{
        return args ->{
            Quote quote = restTemplate.getForObject(
                    "http://gturnquist-quoters.cfapps.io/api/random",Quote.class);
            log.info(quote.toString());
        };
    }

两个方法中,前一个返回值域后一个的参数值存在映射关系,但是并不严格。在通常情况下,可以通过类型来确定两者之间的关系,也就是前者的方法名可以与后者的参数名不相同。但是当存在多个相同的返回类型的Bean时,则需要确认唯一的关系,否则不能确定使用哪个。
这是使用RestTemplate.getForObject方法来关联结果与对象的。这里通过两个Bean将两个部分拆开来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值