RestTemplate使用详解

文章目录

1 概述:

2 服务端对接

3 创建RestTemplate对象

1 概述:

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

之前的HTTP开发是用apache的HttpClient开发,代码复杂,还得操心资源回收等。代码很复杂,冗余代码多。

导入坐标:

<dependency>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-starter-web</artifactId>

</dependency>

application.properties (配置文件)

server.port=8090

pom.xml

使用IDEA创建SpringBoot项目

https://blog.csdn.net/qq_44509920/article/details/107738198

2 服务端对接

两端服务器都要运行

https://blog.csdn.net/qq_44509920/article/details/107938131

3 创建RestTemplate对象

3 创建RestTemplate对象


创建实体类Goods

package com.czxy.ssm.pojo;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data//相当于拥有了getter、setter、toString方法

@AllArgsConstructor//全参构造

@NoArgsConstructor//空参构造

public class Goods {

    public Integer id;

    private String name;

    private String image;

    private Double price;

}

第一步:创建RestTemplate类,在类中创建RestTemplate对象

package com.czxy.ssm.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.client.RestTemplate;

/**

* RestTemplate工具类,主要用来提供RestTemplate对象

*/

@Configuration//加上这个注解作用,可以被Spring扫描

public class RestTemplateConfig {

     /**

    * 创建RestTemplate对象,将RestTemplate对象的生命周期的管理交给Spring

    */   

  @Bean    

    public RestTemplate restTemplate(){

        return new RestTemplate();

    }

}

第二步:创建RestTempController,注入RestTemplate

package com.czxy.ssm.controller;

import com.czxy.ssm.pojo.Goods;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.http.ResponseEntity;

import org.springframework.web.bind.annotation.*;

import org.springframework.web.client.RestTemplate;

/**

* 本项目不连接数据库,通过RestTemplate发出get、post、put、delete请求,

* 请求Goods-project项目中controller的方法

*/

@RestController

@RequestMapping("/rest")

public class RestTempController {

// 从Spring的容器中获取restTemplate

 @Autowired 

 private RestTemplate restTemplate;

/**

    * 通过/id查询

    * http://localhost:8090/goods2 -->分页查找

    */

    @GetMapping("/{id}")

    public ResponseEntity<String> findByPage(@PathVariable Integer id){

/**

        * 第一个参数:url

        * 第二个参数:返回值类型

        */

        ResponseEntity<String> entity = restTemplate.getForEntity("http://localhost:8080/goods2/"+id, String.class);

        System.out.println("状态码:"+entity.getStatusCode());

        System.out.println("响应体"+entity.getBody());

        return ResponseEntity.ok(entity.getBody());

}

/**

    * 添加数据

    */    @PostMapping    public ResponseEntity<String> addGoods(@RequestBody Goods goods){

        /**

        * 第一个参数:url

        * 第二个参数:数据

        * 第三个参数:返回值类型

        */

        ResponseEntity<String> entity = restTemplate.postForEntity("http://localhost:8080/goods2", goods, String.class);

        return entity;

    }

/**

    * 修改数据

    */

    @PutMapping

    public ResponseEntity<String> updateGoods(@RequestBody Goods goods){

        // 第一个参数:url

        // 第二个参数:对象,数据

        restTemplate.put("http://localhost:8080/goods2",goods);

//      return new ResponseEntity<>("成功", HttpStatus.OK);

        return ResponseEntity.ok("修改成功");

    }

/**

    * 根据/id删除

    */

    @DeleteMapping("/{id}")

    public ResponseEntity<String> deleteGoods(@PathVariable("id") Integer id){

        restTemplate.delete("http://localhost:8080/goods2/"+id,String.class);

        return ResponseEntity.ok("删除成功");

    }

}

第三步:采用postman测试


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容