Consuming a RESTful Web Service
2013-10-22 00:36 Rollen Holt 阅读(1301) 评论(2) 编辑 收藏 举报本篇文章将介绍使用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, "source" : "http://sphotos-d.ak.fbcdn.net/hphotos-ak-frc1/s720x720/554668_163344023827625_839302172_n.png" , "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
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步