SpringBoot使用RestTemplate

Posted Firm陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot使用RestTemplate相关的知识,希望对你有一定的参考价值。

一.RestTemplate简介
Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 android或者第三方服务商都是使用 RestTemplate 请求 restful 服务。

二.实战应用
1.创建实例

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

2.使用

 @Autowired
 private RestTemplate restTemplate;

(1)get请求-----get请求是通过url传递参数
【1】无参
发送方

String url = "http://localhost:8081/Student/Hello";
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
String body = forEntity.getBody();

接收方

@GetMapping("Hello")
    public String Hello(){
        return "Hello";
}

【2】
发送方

String str ="你好";
String url = "http://localhost:8081/Student/Hello/";
ResponseEntity<String> forEntity = restTemplate.getForEntity(url+str, String.class);
String body = forEntity.getBody();

接收方

@GetMapping("Hello/{str}")
    public String Hello(@PathVariable String str){
        return str;
}

【3】
发送方

 String name = "陈鹏";
        HashMap<String, String> map = new HashMap<>();
        map.put("name",name);
        String url = "http://localhost:8081/Test/test/{name}";
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class, map);
        return responseEntity.getBody();

接收方

 @GetMapping("/test/{name}")
    public String test(@PathVariable String name){
        return name;
    }

(2)post请求方式
【1】
发送方

Student stu = new Student("陈鹏",12);
        String url = "http://localhost:8081/Test/test/";
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url,stu,String.class);
        return responseEntity.getBody();

接收方

 @PostMapping("/test")
    public String test(@RequestBody Student student){
        return student.toString();
    }

【2】
发送方

 HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);//设置参数类型和编码
        Student student = new Student("陈",15);
        Map<String,Student> map = new HashMap<>();
        map.put("student",student);
        HttpEntity<Map<String,Student>> request1 = new HttpEntity<>(map, headers);//包装到HttpEntity
        //postForEntity  -》 直接传递map参数
        ResponseEntity<String> respo = restTemplate.postForEntity("http://localhost:8081/Test/test", map, String.class);
        return respo.getBody();

接收方

 @PostMapping("/test")
    public String test(@RequestBody Map<String, Student> map){
        Student student = map.get("student");
        return student.toString();
    }

三.参考
RestTemplate post请求传递map。

RestTemplate post请求传参方式

Spring RestTemplate中几种常见的请求方式

RestTemplate 的传参方式(Get、Put、Post)

RestTemplate 用法详解

以上是关于SpringBoot使用RestTemplate的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot使用RestTemplate

重学springboot系列番外篇之RestTemplate

springboot使用restTemplate post提交值 restTemplate post值

SpringBoot系列之RestTemplate使用示例

31. Springboot中使用RestTemplate

springboot RestTemplate不能注入的原因