RestClient使用

前言

RestClient是Spring6.1使用的http客户端,旨在用来代替RestTemplate发送http,以阻塞方式发送和接收 HTTP 请求和响应,随着Springboot3.2.0的发布,RestClient才可以被使用

RestClient使用

get请求发送

定义一个Get请求的test接口

typescript 复制代码
  @GetMapping("/test")
    public String test() {
        log.info("info日志");
        return "hello";
    }

使用RestClient客户端发送get请求,具体如下

typescript 复制代码
    @RequestMapping("/hello")
    public String hello() {
        RestClient restClient = RestClient.create();
        String result = restClient.get().uri("http://localhost:7028/test").retrieve().body(String.class);
        log.info("返回结果为:{{}}", result);
        return "success";
    }

post请求

定义一个post和json格式的请求

less 复制代码
    @PostMapping("/save")
    public String save(@RequestBody User user) {
        log.info("数据为:{{}}", user);
        return "hello";
    }

使用RestClient客户端发送post请求,具体如下

ini 复制代码
@RequestMapping("/testSave")
    public String testSave() throws JsonProcessingException {
        JsonMapper jsonMapper = JsonMapper.builder()
                .configure(JsonReadFeature.ALLOW_SINGLE_QUOTES, true)
                .build();
        RestClient restClient = RestClient.create();
        User user = new User();
        user.setId(1L);
        user.setName("aaa");
        String json = jsonMapper.writeValueAsString(user);
        String result = restClient.post()
                .uri("http://localhost:7028/save")
                .contentType(APPLICATION_JSON)
                .body(json).retrieve().body(String.class);
        log.info("返回结果为:{{}}", result);
        return "success";
    }

delete请求

定义一个delete接口

less 复制代码
    @DeleteMapping("/deleteById/{id}")
    public String deleteById(@PathVariable("id") Long id) {
        log.info("删除id为:{{}}", id);
        return "success";
    }

使用RestClient客户端发送delete请求,具体如下

typescript 复制代码
   @RequestMapping("/testDeleteById")
    public String testDeleteById() {
        RestClient restClient = RestClient.create();
        String result = restClient.delete().uri("http://localhost:7028/deleteById/{id}", 1)
                .retrieve().body(String.class);
        log.info("返回结果为:{{}}", result);
        return "success";
    }

put请求

定义一个put请求

less 复制代码
 @PutMapping("/update")
    public String update(@RequestBody User user) {
        log.info("数据为:{{}}", user);
        return "hello";
    }

使用RestClient客户端发送put请求,具体如下

ini 复制代码
@RequestMapping("/testUpdate")
    public String testUpdate() throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        RestClient restClient = RestClient.create();
        User user = new User();
        user.setId(1L);
        user.setName("aaa");
        String json = objectMapper.writeValueAsString(user);
        String result = restClient.put()
                .uri("http://localhost:7028/update")
                .contentType(APPLICATION_JSON)
                .body(json).retrieve().body(String.class);
        log.info("返回结果为:{{}}", result);
        return "success";
    }

总结

RestClient是spring6.1版本以上才有的,但是好用的http工具类很多,可以根据自己习惯做技术选型,提高自己的开发效率

相关推荐
苏三说技术19 分钟前
Spring AI Alibaba已停更了,Java还有希望吗?
后端
一技安身31 分钟前
【java】JDK8 + JDK17 绿色解压共存方案-全程不修改任何系统环境变量
java·开发语言
松就是我902981 小时前
如何搭建一个 Agent 系统:方法论、理想形态与一次真实落地
后端
Layer1 小时前
即时通讯系统的关键设计
后端·架构
java、iOS、Vue1 小时前
Maven antrun vs Jenkins 脚本组装 deb的优缺点、适用场景
java·jenkins·maven
hudd6681 小时前
JavaEE 初阶 - 多线程(初阶)
java·开发语言·java-ee
CarIise1 小时前
Java实训阶段查漏补缺复习笔记2
java·linux·算法
Wang's Blog2 小时前
Java框架 SpringCloud 快速入门: Feign 的性能优化
java·spring cloud·性能优化
golang学习记2 小时前
rust开发,选VS Code还是RustRover?
开发语言·后端·rust
蛋蛋的就会顺顺的2 小时前
hot100——二叉树
java·数据结构·算法·leetcode·力扣