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
在这里插入图片描述

2 服务端对接

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(){
       // RestTemplate restTemplate = new RestTemplate();
       //设置中文乱码问题方式一
       // restTemplate.getMessageConverters().add(1,new StringHttpMessageConverter(Charset.forName("UTF-8")));
       // 设置中文乱码问题方式二
       // restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); // 支持中文编码
        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测试


  • 在这里插入图片描述


  • 在这里插入图片描述


  • 在这里插入图片描述


  • 在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐