【Spring】官网教程阅读笔记(二):消费一个RESTweb服务

【前言】REST教程第二篇,这里的“消费”指“解析、渲染”的意思。原文链接 http://spring.io/guides/gs/consuming-rest/

【目标】在这里,你将使用REST模板从Facebook图像API:http://graph.facebook.com/pivotalsoftware检索公司网页数据

【准备工作】和第一篇一样

  • 准备好jdk 1.7
  • eclipse下的maven建立Spring工程
  • 做好修改pom.xml的准备,和第一篇的pom.xml相比,<dependencies>不一样
<span style="font-size:14px;">    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
    </dependencies></span>

获取REST资源

建立好项目之后,就可以创建一个访问REST服务的应用了。
假设你想找出Facebook上有关Pivotal东西,已知Pivotal在Facebook上有自己的页面,其ID为“PivotalSoftware”,你应该可以通过URLhttp://graph.facebook.com/pivotalsoftware访问到Facebook上的图形API。
如果你在web浏览器或者Curl上访问这个URL,你会收到一个Json文档,他看起来好像下面的样子:
(节省篇幅,省略掉这个Json)
够简单,不过对于Web浏览器和Curl来说,实在没什么用。(他的消费就是这个意思,要把json转成有用的东西)

    一个更有用的消费REST方式是用程序完成解析。为了完成这项任务,Spring提供了一个很方便的模板类叫做RESTTemplate。 RESTTemplate把与REST服务的交互串成一条线上的蚂蚱(不懂为何用incantation咒语这个词,我改成蚂蚱 )。并且可以把数据绑定到指定的领域的类型上。

    首先,创建一个包含所需数据的领域类。假设你就想知道Pivotal的name,phonenumber,website URL,以及pivotalsoftware页面的内容,下面建这样一个领域类:
package hello;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Page {

    private String name;
    private String about;
    private String phone;
    private String website;

    public String getName() {
        return name;
    }

    public String getAbout() {
        return about;
    }

    public String getPhone() {
        return phone;
    }

    public String getWebsite() {
        return website;
    }

}
这就是一个很简单的Java类,有一些属性和getter,唯一不同的是有一个注解@JsonIgnoreProperties,表示忽略(REST的Json响应页中)没有绑定到这个类的属性。

让这个应用跑起来

war方式就不说了。现在看Application的方式怎么写。
package hello;

import org.springframework.web.client.RestTemplate;

public class Application {

    public static void main(String args[]) {
        RestTemplate restTemplate = new RestTemplate();
        Page page = restTemplate.getForObject("http://graph.facebook.com/pivotalsoftware", Page.class);
        System.out.println("Name:    " + page.getName());
        System.out.println("About:   " + page.getAbout());
        System.out.println("Phone:   " + page.getPhone());
        System.out.println("Website: " + page.getWebsite());
    }

}

和第一篇使用SpringApplication.run()启动REST服务不同,这里使用RestTemplate对象的getForObject()方法,依靠jackson Json完成Json对象的直接解析。
    虽然这里用了RestTemplate生成GET请求,实际上他还可以用于处理POST、PUT、DELETE。

输出看起来像这样:
Name:    Pivotal
About:   At Pivotal, our mission is to enable customers to build a new class of applications, leveraging big and fast data, and do all of this with the power of cloud independence.
Phone:   650-286-8012
Website: http://www.gopivotal.com
【小结】掌握RESTTemplate对象的getForObject()方法,可以看看doc,应该还有其他方法。 注解@JsonIgnoreProperties在bean中的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值