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工具类很多,可以根据自己习惯做技术选型,提高自己的开发效率

相关推荐
古法老登瞎折腾29 分钟前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
智能运维指南1 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
小满zs1 小时前
Go语言第十七章(反射)
后端·go
小满zs1 小时前
Go语言第十五章(JSON序列化)
后端·go
小满zs1 小时前
Go语言第十六章(自定义类型)
后端·go
yz_aiks2 小时前
Spring AI 2.1 ChatMemory 已过时用什么替代:迁移到 Session Memory 实战(JDBC 存储与会话压缩)
java·spring boot·大模型·ai agent·spring ai
金銀銅鐵2 小时前
[Java] 用 GUI 展示 EnumMap 增删键值对时的内部变化
java·后端·ai编程
学长毕设2 小时前
基于SpringBoot的上门洗车服务系统设计与实现
java·spring boot·后端
jason成都2 小时前
RTKLIB-Java 多基线联合RTK:FIX率从0%到91.5%的三层根因修复
java·gnss·rtklib·rtklib_java
鱼宵3 小时前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作