当前位置: 首页 > news >正文

SpringBoot 3自带的 HTTP 客户端工具

原理

Spring的HTTP 服务接口是一个带有@HttpExchange方法的 Java 接口,它支持的支持的注解类型有:

  • @HttpExchange:是用于指定 HTTP 端点的通用注释。在接口级别使用时,它适用于所有方法。
  • @GetExchange:为 HTTP GET请求指定@HttpExchange。
  • @PostExchange:为 HTTP POST请求指定@HttpExchange。
  • @PutExchange:为 HTTP PUT请求指定@HttpExchange。
  • @DeleteExchange:为 HTTP DELETE请求指定@HttpExchange。
  • @PatchExchange:为 HTTP PATCH请求指定@HttpExchange。

在这里插入图片描述
在这里插入图片描述

示例:访问远程接口https://api.chucknorris.io/jokes/random

第一步:添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

第二步:配置类

@Configuration
public class HttpConfig {@Beanpublic WebClient webClient() {return WebClient.builder().baseUrl("https://api.chucknorris.io/").build();}@Beanpublic ChuckNorrisService postClient(WebClient webClient) {HttpServiceProxyFactory httpServiceProxyFactory =HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();return httpServiceProxyFactory.createClient(ChuckNorrisService.class);}
}

第三步:远程Service

@HttpExchange(url = "/jokes")
public interface ChuckNorrisService {//https://api.chucknorris.io/jokes/random@HttpExchange(url = "/random", method = "GET")//@GetExchange("/reduct")String reduct();}

第四步:Controller中使用远程Service

@RestController
@RequestMapping("/order")
public class OrderController {@Resourceprivate ChuckNorrisService chuckNorrisService;@GetMapping("/create")public String create() {System.out.println("下单成功!");//扣除库存String stockMsg = chuckNorrisService.reduct();return "order add success -- " + stockMsg;}}

第五步:测试

http://www.lryc.cn/news/119838.html

相关文章:

  • Spring Boot多级缓存实现方案
  • 机器学习笔记:李宏毅chatgpt 大模型 大资料
  • 2023年中国智慧公安行业发展现况及发展趋势分析:数据化建设的覆盖范围不断扩大[图]
  • Apache Dubbo概述
  • React UI组件库
  • 计算机科学的伟大变革:从机械计算到人工智能
  • 微服务详解
  • Python爬虫的requests(学习于b站尚硅谷)
  • PHP最简单自定义自己的框架view使用引入smarty(8)--自定义的框架完成
  • 字符串的常用操作
  • 开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用
  • 文心一言 VS 讯飞星火 VS chatgpt (74)-- 算法导论7.2 2题
  • 大数据第二阶段测试
  • 06 为什么需要多线程;多线程的优缺点;程序 进程 线程之间的关系;进程和线程之间的区别
  • datax-web报错收集
  • YOLO相关原理(文件结构、视频检测等)
  • 深入解析Spring Boot的核心特性与示例代码
  • 什么是Java中的观察者模式?
  • 无涯教程-Perl - endhostent函数
  • Vue2使用easyplayer
  • Map映射学习
  • 【每日一题Day292】LC1572矩阵对角线元素的和 模拟
  • Mongodb:业务应用(2)
  • DSO学习笔记
  • 【Windows 常用工具系列 5 -- 如何在网页(CSDN)中实现右上角及右下角数字显示】
  • sql注入--报错注入
  • Nginx常用功能
  • 【Express.js】express-validator
  • 沁恒ch32V208处理器开发(三)GPIO控制
  • Jenkins 中 shell 脚本执行失败却不自行退出