使用 RestTemplate(GET) 使用 REST API

要使用 RestTemplate 使用 REST API,請使用 Spring boot initialzr 建立一個 Spring 啟動專案,並確保新增了 Web 依賴項:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

一旦你設定了你的專案 ,建立一個 RestTemplate 豆。你可以在已生成的主類中執行此操作,也可以在單獨的配置類(使用 @Configuration 註釋的類)中執行此操作:

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

之後,建立一個域類,類似於建立 REST 服務時的操作方法

public class User {
    private Long id;
    private String username;
    private String firstname;
    private String lastname;

    public Long getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}

在你的客戶端,自動連線 RestTemplate

@Autowired
private RestTemplate restTemplate;

要使用返回單個使用者的 REST API,你現在可以使用:

String url = "http://example.org/path/to/api";
User response = restTemplate.getForObject(url, User.class);

使用返回列表或使用者陣列的 REST API,你有兩個選擇。將它作為陣列使用:

String url = "http://example.org/path/to/api";
User[] response = restTemplate.getForObject(url, User[].class);

或者使用 ParameterizedTypeReference 消費它:

String url = "http://example.org/path/to/api";
ResponseEntity<List<User>> response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<List<User>>() {});
List<User> data = response.getBody();

請注意,使用 ParameterizedTypeReference 時,你必須使用更高階的 RestTemplate.exchange() 方法,並且你必須建立它的子類。在上面的示例中,使用了匿名類。