RestTemplate接收泛型bean使用方法

项目中使用RestTemplate请求第三方api接口,第三方接口返回的类型是这样的

@Data
public class ResultBody {

    /**
     * 返回结果代号
     */
    private String resultCode;

    /**
     * 返回结果描述
     */
    private String resultDesc;

    /**
     * 返回结果数据
     */
    private T resultData;

}

所以得需要泛型来接口具体data。RestTemplate也是支持这种接口泛型方式的,只是封装的不是很好,用起来有点复杂。

需要使用RestTemplate的exchange方法发起调用请求,同时需要ParameterizedTypeReference类来作为参数,具体使用方式如下。

private static  T exchange(String url, Object request, ParameterizedTypeReference reference) {
        RestTemplate restTemplate = new RestTemplate();
        // 请求头
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
        headers.add("Accept", "application/json");

        String message = JSON.toJSONString(request);
        HttpEntity httpEntity = new HttpEntity<>(message, headers);
        ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, reference);
        return responseEntity.getBody();
    }

调用方式如下

public static void main(String[] args) {
        String url = "http://127.0.0.1:8080/api/user/user/login";
        ParameterizedTypeReference> reference = new ParameterizedTypeReference>(){};
        Map request = new HashMap<>();
        request.put("phone", 1111111L);
        request.put("code", "1234");
        ResultBody resultBody = exchange(url, request, reference);
        System.out.println(resultBody);
    }

发起请求赶紧试一下吧RestTemplate接收泛型bean使用方法_第1张图片

你可能感兴趣的:(后端)