Consuming a RESTful Web Service

简介:

 本篇文章将介绍使用Spring来建立RESTful的Web Service。

  我们通过一个例子来说明这篇文章:这个例子将会使用Spring的RestTemplate来从Facebook的提供的API中获取一些信息。然后对这些信息进行一些处理。Facebook的API为:

1
http: //graph.facebook.com/gopivotal

  其实在这个例子中,这个API只是为了掩饰用,并没有特别的含义。这个例子也只是为了说明从一个在线的接口中获取一些数据并进行处理。

  当我们通过浏览器或者curl请求这个路径的时候会返回数据格式为:

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
    "id" "161112704050757" ,
    "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. " ,
    "app_id" "0" ,
    "can_post" false ,
    "category" "Internet/software" ,
    "checkins" : 0,
    "cover" : {
       "cover_id" : 163344023827625,
       "offset_y" : 0,
       "offset_x" : 0
    },
    "founded" "2013" ,
    "has_added_app" false ,
    "is_community_page" false ,
    "is_published" true ,
    "likes" : 126,
    "link" "https://www.facebook.com/gopivotal" ,
    "location" : {
       "street" "1900 South Norfolk St." ,
       "city" "San Mateo" ,
       "state" "CA" ,
       "country" "United States" ,
       "zip" "94403" ,
       "latitude" : 37.552261,
       "longitude" : -122.292152
    },
    "name" "Pivotal" ,
    "phone" "650-286-8012" ,
    "talking_about_count" : 15,
    "username" "gopivotal" ,
    "website" "http://www.gopivotal.com" ,
    "were_here_count" : 0
}

  的数据。但是我们只需要其中的一些很少的信息。在这种情况下我们就可以使用Spring的RestTemplate来帮助我们完成这个工作:

  我们通过一个Model来定义我们需要的一些属性:

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package  hello;
 
import  org.codehaus.jackson.annotate.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;
     }
 
}

  使用@JsonIgnoreProperties注解来忽略一些我们我们不需要的属性。

  然后我们就可以编写下面的方法来完成我们的工作:

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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/gopivotal" , 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());
     }
 
}

  因为我们在classpath中增加了 Jackson 库,所以spring就可以使用 message converter将JSON对象映射为我们定义的model。

  虽然在这快我们使用的是get请求,但是RestTemplate也支持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
目录
相关文章
|
3月前
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
|
17小时前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
|
3月前
|
关系型数据库 MySQL Linux
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
|
3月前
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
|
3月前
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
|
3月前
【Azure 应用服务】通过 Web.config 开启 dotnet 应用的 stdoutLog 日志,查看App Service 产生500错误的原因
【Azure 应用服务】通过 Web.config 开启 dotnet 应用的 stdoutLog 日志,查看App Service 产生500错误的原因
|
3月前
|
Linux Python
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
|
3月前
|
存储 安全 网络安全
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
|
3月前
|
存储 Linux 网络安全
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
|
3月前
【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)
【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)