使用 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() 方法,并且你必须创建它的子类。在上面的示例中,使用了匿名类。