使用Restful风格的Web Service(Maven版本)

[该教程翻译自Spring官方,并进行适当删减。]

你将搭建的

你将创建的应用将使用Spring的RestTemplate来获取Facebook的Graph API的数据。(符合Restful风格)

http://graph.facebook.com/pivotalsoftware

它将返回的JSON字符串为:

{
   "id": "161112704050757",
   "about": "Pivotal is enabling the creation of modern software applications that leverage big & fast data \u2013 on a single, cloud independent platform.",
   "can_post": false,
   "category": "Internet/software",
   "category_list": [
      {
         "id": "108472109230615",
         "name": "Computer Services"
      }
   ],
   "checkins": 42,
   "cover": {
      "cover_id": 163344023827625,
      "offset_x": 0,
      "offset_y": 0,
      "source": "https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-xaf1/t1.0-9/s720x720/554668_163344023827625_839302172_n.png"
   },
   "description": "Pivotal, the company at the intersection of big data, PaaS, and agile development, helps companies transform into great software companies. It starts with Pivotal One, a comprehensive solution that includes a set of application and data services that run on top of Pivotal CF, a turnkey platform-as-a-service (PaaS) solution for agile development teams to rapidly update and scale applications on a private cloud that can be instantly expanded and upgraded with no downtime, allowing enterprises to innovate with disruptive speed.\n\nREVOLUTIONARY COMPREHENSIVE PAAS\nPivotal One is a next generation PaaS that can be deployed on multiple cloud environments to deliver a turnkey experience for scaling and updating PaaS with no downtime. Pivotal One Services helps create a PaaS that no other vendor can offer in the industry by integrating differentiated data services such as Hadoop and visual analytics.\n\nSPEED TIME TO MARKET\nDriving the demand for PaaS is the trend of software being the competitive edge across all industries. This trend has unleashed a new generation of developers driving a deep shift in platforms and processes. These developers work in agile teams and demand a platform that allows them to continuously deliver updates to and horizontally scale their applications with no downtime. They seek standardized ways to plug in leading data services and perform deep user analytics on top of massive datasets to drive rapid iteration based on customer needs.\n\nABOUT PIVOTAL\nPivotal, committed to open source and open standards, is a leading provider of application and data infrastructure software, agile development services, and data science consulting. Follow Pivotal on Twitter \u0040gopivotal.",
   "founded": "2013",
   "has_added_app": false,
   "is_community_page": false,
   "is_published": true,
   "likes": 1022,
   "link": "https://www.facebook.com/pivotalsoftware",
   "location": {
      "city": "San Francisco",
      "country": "United States",
      "latitude": 37.78199,
      "longitude": -122.40406,
      "state": "CA",
      "street": "875 Howard St",
      "zip": "94103"
   },
   "mission": "Pivotal, the company at the intersection of big data, PaaS, and agile development, helps companies transform into great software companies. ",
   "name": "Pivotal",
   "parking": {
      "lot": 0,
      "street": 0,
      "valet": 0
   },
   "phone": "(650) 286-8012",
   "products": "PaaS:\nPivotal One, Pivotal CF, Cloud Foundry\n\nDATA: Pivotal HD, Pivotal HD with GemFire XD, Pivotal Greenplum DB, Pivotal Data Dispatch,  Pivotal GemFire, Pivotal SQLFire, Redis\nPaaS: Pivotal One, Pivotal CF, Pivotal Web Services, Cloud Foundry\nDATA TOOLS: Pivotal VRP, Pivotal Command Center\nANALYTICS: MADlib, Pivotal GPText\nAPPLICATIONS: Pivotal tc Server, Pivotal Web Server, Pivotal RabbitMQ, Spring, vFabric Suite",
   "talking_about_count": 77,
   "username": "pivotalsoftware",
   "website": "http://www.gopivotal.com",
   "were_here_count": 42
}

这是关于一个公司的信息,类似的,如果你把最后的改为google,将返回:

工具

一个文本编辑器,JDK1.6及以上,Maven 3.0+或者Gradle 1.11+。(本文将使用Maven)

pom.xml清单:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-consuming-rest</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.5.RELEASE</version>
    </parent>

    <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>

    <properties>
        <start-class>hello.Application</start-class>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>

</project>

创建项目

首先你新建一个符合Maven规范的目录结构, src/main/java/hello。

└── src
    └── main
        └── java
            └── hello

如果直接通过浏览器获取上面的JSON数据是很拙劣的,更实用的方法是通过编程使用REST Web Service。为帮你完成这项工作,Spring提供了一个便利的模板类:RestTemplate。RestTemplate使得和大多数Restful风格Service的交互在一行内能够完成,并且能绑定到自定义的域类型。

笔者注:这里提到的一个观点是:Spring的便捷性之一体现在使用切面和模板减少代码,我们常用的JDBCTemplate就体现这一思想。

于是,我们新建一个类包含你所需要的信息,(假设你只想知道 名字、关于、电话、网站)

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;
    }

}

这里的@JsonIgnoreProperties是来自Jackson JSON包,指示忽略不在范围内的所有属性。

最后是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());
    }

}

因为Jackson JSON包在类加载路径,RestTemplate将使用它(通过一个消息转化器)来将JSON数据转成Page对象。(如果不使用Spring的这一特性,推荐使用FastJson完成对象的序列化和反序列化,这是阿里巴巴的一个项目)

目前,你只使用了RestTemplate的Http Get请求,但它实际上也支持HTTP的其他请求(如get、delete)

执行时和前一篇文章类似:

mvn clean package

然后,

 java -jar target/gs-consuming-rest-0.1.0.jar

结果是在控制台打印结果:

时间: 2024-10-20 13:57:38

使用Restful风格的Web Service(Maven版本)的相关文章

搭建一个RESTFUL风格的Web Service (Maven版本)

[该教程翻译自Spring官方,并进行适当删减.] 你将搭建的 你将搭建一个可以接受Http Get 请求的web service, http://localhost:8080/greeting 并将以JSON字符串的形式返回问候, {"id":1,"content":"Hello, World!"} 工具 一个文本编辑器,JDK1.6及以上,Maven 3.0+或者Gradle 1.11+.(本文将使用Maven) 下面是pom.xml文件的清

Web Service笔记(五):CXF开发RESTful风格的Web Service

前言: 1.Web Service笔记(五):利用CXF结合Spring开发web service 2.XML学习笔记(三):Jaxb负责xml与javaBean映射 3.jax-rs详解 4.可以使用浏览器的工具调试:如 Firefox 的RESTClient 和chrome的REST Console. 一.配置Spring的配置文件 1.需要引入新的 jar 包. 2.配置 applicationContext-server.xml 文件.使用 jaxrs:server ,记得引入jaxrs

基于cxf开发restful风格的Web Service

一.写在前面 webservice一些简单的其他用法和概念,就不在这里赘述了,相信大家都可以在网上查到,我也是一个新手,写这篇文章的目的一方面是想记录自己成长的历程,另一方面是因为学习这个的时候花了点时间,希望本文章能为大家节约点时间.当然描述的可能不到位,望谅解. 二.创建项目 2.1.创建公用接口project 为了方便服务端和客户端调用接口可以先创建一个接口java project,单独建一个接口project的用处后面再说. 然后导入对应jar包,可以去cxf官网下载http://cxf

RESTful风格的Web服务框架:Swagger

Swagger与SpringMVC项目整合 为了方便的管理项目中API接口,在网上找了好多关于API接口管理的资料,感觉目前最流行的莫过于Swagger了,功能强大,UI界面漂亮,并且支持在线测试等等,所以本人仔细研究了下Swagger的使用,下面就如何将Swagger与个人的SpringMVC项目进行整合做详细说明: 最终API管理界面:  详细步骤: Step1:项目中引入相关jar包: <properties> <project.build.sourceEncoding>UT

使用Spring创建满足RESTful规范的Web Service

原文:http://spring.io/guides/gs/rest-service/ 这个指南讨论如何使用Spring的RESTful web service来创建一个"hello world"程序. 示例功能简介 使用以下方式的HTTP GET请求来访问这个Service: http://localhost:8080/greeting 使用下面greeting的JSON描述来响应这个请求: {"id":1,"content":"He

如何封装RESTful Web Service

所谓Web Service是一个平台独立的,低耦合的,自包含的.可编程的Web应用程序,有了Web Service异构系统之间就可以通过XML或JSON来交换数据,这样就可以用于开发分布式的互操作的应用程序.Web Service使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件就可相互交换数据或集成,无论它们各自所使用的语言.平台或内部协议是什么,都可以相互交换数据.Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制. ??REST(REpre

Restful Web Service初识

Restful Web Service初识 一.Web Services Web Services 是一种基于组件的软件平台,是面向服务的Internet 应用.Web Services 框架的核心技术包括SOAP ,WSDL 和UDDI ,它们都是以标准的XML 文档的形式表示. SOAP (“Simple Object Access Protocol”的缩写)是Web Services 的通信协议.SOAP是一种简单的.轻量级的基于XML 的机制,用于在网络应用程序之间进行结构化数据交换.S

怎样封装RESTful Web Service

所谓Web Service是一个平台独立的,低耦合的.自包括的.可编程的Web应用程序.有了Web Service异构系统之间就能够通过XML或JSON来交换数据,这样就能够用于开发分布式的互操作的应用程序. Web Service使得执行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件就可相互交换数据或集成.不管它们各自所使用的语言.平台或内部协议是什么,都能够相互交换数据.Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制. ??REST(REpr

Rest风格WEB服务(Rest Style Web Service)的真相

http://blog.csdn.net/jia20003/article/details/8365585 Rest风格WEB服务(Rest Style Web Service)的真相 分类: J2EE2012-12-21 21:55 6103人阅读 评论(2) 收藏 举报 写这篇文章是目的不是介绍Web-Service, 而是从Restful Web Service说起来剖析一下 什么才是真正的Restful Style的架构与协议,从而更好的理解web服务的设计理念与架 构本质. 一:Web