本文将演示 Rest Template 的简单用法,本文参考了 Spring 的官方案例。
新建 Spring Boot 项目
在 IDEA 中新建一个 maven 项目,然后编辑 pom.xml 文件,加入一下依赖和构建信息:
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
| <properties> <java.version>1.8</java.version> </properties>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
|
新建数据类
在 src/main/java 新建一个名为:cn.com.hohistar.sboot.model 的包,然后新建名为: Value 的类,填入以下代码:
1 2 3 4 5 6 7
| @JsonIgnoreProperties(ignoreUnknown = true) @Data public class Value {
private Long id; private String quote; }
|
再建一个名为: Quote 的类,填入以下代码:
1 2 3 4 5 6 7
| @JsonIgnoreProperties(ignoreUnknown = true) @Data public class Quote {
private String type; private Value value; }
|
新建启动类
在 cn.com.hohistar.sboot 包中新建一个名为: QuoteApplication 的类,添入以下代码:
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
| @SpringBootApplication public class QuoteApplication {
private static final Logger log = LoggerFactory.getLogger(QuoteApplication.class);
private static final String GET_QUOTE_URL = "https://gturnquist-quoters.cfapps.io/api/random";
public static void main(String[] args) { SpringApplication.run(QuoteApplication.class, args); }
@Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); }
@Bean public CommandLineRunner run(RestTemplate restTemplate) throws Exception { return args -> { Quote quote = restTemplate.getForObject( GET_QUOTE_URL, Quote.class); log.info(quote.toString()); }; } }
|
可以看到,代码中使用 RestTemplateBuilder 作为构造器来构造了 RestTemplate 的实例,然后使用 getForObject 方法来访问服务API,并直接将访问结果转换为 Quote 类。