Spring guide 03: Restful服务的消费
Posted MrQin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring guide 03: Restful服务的消费相关的知识,希望对你有一定的参考价值。
这一小节我们建立一个消费WebService的应用。
我们将建立一个通过Spring的RestTemplate从http://gturnquist-quoters.cfapps.io/api/random 获得数据的应用。
http://gturnquist-quoters.cfapps.io/api/random是一个RestfulService接口,它随机引用一些关于SpringBoot的话并以Json形式返回。
Json格式大致如下
{ type: "success", value: { id: 10, quote: "Really loving Spring Boot, makes stand alone Spring apps easy." } }
非常简单,但通常不会通过浏览器来获取这类数据,而是以编程方式消费。
Spring提供的模板类RestTemplate可以轻松地帮你完成这些任务。
RestTemplate不但可以 makes interacting with most RESTful services a one-line incantation,也可以将数据绑定到客户端对应的实体类中。
如下,根据Json创建一个实体类
1 package cn.tiny77.guide03.po; 2 3 import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 5 @JsonIgnoreProperties(ignoreUnknown = true) 6 public class Quote { 7 8 private String type; 9 private Value value; 10 11 public Quote() { 12 } 13 14 public String getType() { 15 return type; 16 } 17 18 public void setType(String type) { 19 this.type = type; 20 } 21 22 public Value getValue() { 23 return value; 24 } 25 26 public void setValue(Value value) { 27 this.value = value; 28 } 29 30 @Override 31 public String toString() { 32 return "Quote{" + 33 "type=\'" + type + \'\\\'\' + 34 ", value=" + value + 35 \'}\'; 36 } 37 }
你可以看到,这是简单的包含一些属性和相应的getter、Setter方法的Java类。
@JsonIgnoreProperties 注释的作用是当一些属性无法绑定时忽略它们。
为了你能直接绑定数据到实体类,你需要指定实体类的属性名和Json中的key一致,如果它俩不一致,你需要为实体类属性添加JsonProperty来指定相应的Json的key。
补充Value类的代码截图
1 package cn.tiny77.guide03.po; 2 3 import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 5 @JsonIgnoreProperties(ignoreUnknown = true) 6 public class Value { 7 8 private Long id; 9 private String quote; 10 11 public Value() { 12 } 13 14 public Long getId() { 15 return this.id; 16 } 17 18 public String getQuote() { 19 return this.quote; 20 } 21 22 public void setId(Long id) { 23 this.id = id; 24 } 25 26 public void setQuote(String quote) { 27 this.quote = quote; 28 } 29 30 @Override 31 public String toString() { 32 return "Value{" + 33 "id=" + id + 34 ", quote=\'" + quote + \'\\\'\' + 35 \'}\'; 36 } 37 }
Main函数如下
1 package cn.tiny77.guide03; 2 3 4 import org.slf4j.Logger; 5 import org.slf4j.LoggerFactory; 6 import org.springframework.web.client.RestTemplate; 7 8 import cn.tiny77.guide03.po.Quote; 9 10 public class App { 11 private static final Logger log = LoggerFactory.getLogger(App.class); 12 private static final String URL = "http://gturnquist-quoters.cfapps.io/api/random"; 13 14 public static void main( String[] args ) throws Exception 15 { 16 RestTemplate restTemplate = new RestTemplate(); 17 Quote quote = restTemplate.getForObject(URL, Quote.class); 18 log.info(quote.toString()); 19 } 20 }
运行 如下
以上是关于Spring guide 03: Restful服务的消费的主要内容,如果未能解决你的问题,请参考以下文章
[译]Spring Boot 构建一个RESTful Web服务
Spring RESTful 服务作为 WAR 而不是 Tomcat 中的 JAR
RESTFUL web service spring,XML而不是JSON?
从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统03创建RESTful API,并统一处理返回值