Consuming a RESTful Web Service"/>
Spring Boot 之 Consuming a RESTful Web Service
Consuming a RESTful Web Service .顾名思义,作为消费者,处理 RESTful Web Service返回的数据。
下载demo : git clone .git
进入项目
cd into gs-consuming-rest/initial
maven pom.xml 文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0" xmlns:xsi=""xsi:schemaLocation=".0.0 .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.4.1.RELEASE</version></parent><properties><java.version>1.8</java.version></properties><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
restful 资源服务器 .
内容如下:
{type: "success",value: {id: 10,quote: "Really loving Spring Boot, makes stand alone Spring apps easy."}
}
分析返回json 数据格式 最外层是 type 和value , value 嵌套一个字典 包含 id 和 quote .
在开发中,一般一个字典对应一个对象,字典的键对应对象的属性。
通过分析我们需要创建两个对象,一个对象Quote包含id 和quote ,另一个对象 包含type 和value ,value的类型为Quote.
创建类:
src/main/java/hello/Quote.java
package hello;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;@JsonIgnoreProperties(ignoreUnknown = true)
public class Quote {private String type;private Value value;public Quote() {}public String getType() {return type;}public void setType(String type) {this.type = type;}public Value getValue() {return value;}public void setValue(Value value) {this.value = value;}@Overridepublic String toString() {return "Quote{" +"type='" + type + '\'' +", value=" + value +'}';}
}
@JsonIgnoreProperties 注解 未知属性将会被忽略。
创建另一个类
src/main/java/hello/Value.java
package hello;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;@JsonIgnoreProperties(ignoreUnknown = true)
public class Value {private Long id;private String quote;public Value() {}public Long getId() {return this.id;}public String getQuote() {return this.quote;}public void setId(Long id) {this.id = id;}public void setQuote(String quote) {this.quote = quote;}@Overridepublic String toString() {return "Value{" +"id=" + id +", quote='" + quote + '\'' +'}';}
}
创建Application
src/main/java/hello/Application.java
public class Application {private static final Logger log = LoggerFactory.getLogger(Application.class);public static void main(String args[]) {RestTemplate restTemplate = new RestTemplate();Quote quote = restTemplate.getForObject("", Quote.class);log.info(quote.toString());}}
RestTemplate 可请求restful web service 服务。 它可执行GET ,POST,PUT,DELETE请求。
运行代码可看到如下效果
2015-09-23 14:22:26.415 INFO 23613 --- [main] hello.Application : Quote{type='success', value=Value{id=12, quote='@springboot with @springframework is pure productivity! Who said in #java one has to write double the code than in other langs? #newFavLib'}}
到目前为止,我们还没有在我们的应用程序使用Spring Boot,但有一些优势,这样做,这是不难做到。首先,我们想让Spring Boot
管理消息转换器RestTemplate,以便自定义很容易添加声明。为此我们使用@ SpringBootApplication 启动它,
就像任意一个Spring Boot应用。最后我们到 commandlinerunner回调是由Spring Boot启动时执行:
package hello;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication
public class Application {private static final Logger log = LoggerFactory.getLogger(Application.class);public static void main(String args[]) {SpringApplication.run(Application.class);}@Beanpublic RestTemplate restTemplate(RestTemplateBuilder builder) {return builder.build();}@Beanpublic CommandLineRunner run(RestTemplate restTemplate) throws Exception {return args -> {Quote quote = restTemplate.getForObject("", Quote.class);log.info(quote.toString());};}
}
原文: /
更多推荐
Spring Boot 之 Consuming a RESTful Web Service
发布评论