基於上一篇Microservices - Restful API HATEOAS介紹了支持 HATEOAS 特性的 Restful API,本篇介紹如何調用這樣的 Restful APIs,即 consumer client 端的代碼編寫。 Template method pattern
下載本文完整項目代碼 Github
Dependency
我們使用 spring web 裡的 RestTemplate
去調用 Restful API,所以在 Spring Boot Maven 項目裡只需要添加這個依賴包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Create Client
創建一個新的類英雄管理者 HeroManager
來作為客戶端調用英雄的 Restful APIs
@Component
public class HeroManager implements CommandLineRunner {
public static String BASE_URL = "http://localhost";
@Value("${server.port}")
public String serverPort;
private final RestTemplate template = new RestTemplate();
@Override
public void run(String... args) throws Exception {
String heroUrl = BASE_URL + ":" + serverPort + "/hero";
Hero batman = new Hero("Batman");
BigInteger id = template.postForObject(heroUrl, batman, BigInteger.class);
HeroResource hero = template.getForObject(heroUrl + "/{hero}", HeroResource.class, id);
System.out.println("Got you " + hero.getName());
}
}
Test
本地創建一個 MongoDB 服務
docker run --rm --name my-mongo -d -p 27017:27017 mongo
啟動應用程序
mvn spring-boot:run
可以在後台看到打印出的信息
...
2017-08-04 17:31:32.961 INFO 16292 --- [nio-8090-exec-1] org.mongodb.driver.connection : Opened connection [connectionId{localValue:2, serverValue:7}] to localhost:27017
Got you Batman
2017-08-04 17:31:33.169 INFO 16292 --- [ main] wang.tiven.trycf.HeroApplication : Started HeroApplication in 9.013 seconds (JVM running for 14.152)
Comments