WebClient,HTTP Interface远程调用阿里云API

news2024/11/26 2:48:37

 HTTP Interface

  1. Spring 允许我们通过定义接口的方式,给任意位置发送 http 请求,实现远程调用,可以用来简化 HTTP 远程访问。需要webflux场景才可

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
  2. 定义接口

    public interface BingService {
    
        @GetExchange(url = "/search",accept="application/json")//请求的地址,接收json数据
        Mono<String> search(@RequestParam("area") String keyword,
                        @RequsetHeader("Authorization") String auth);//在service里@GetExchange表示我要发一个请求参数叫"area"
    //和controller上不一样.
    }
  3. 创建代理&测试

    @SpringBootTest
    class Boot05TaskApplicationTests {
    
        @Test
        public Mono<String> weather(String city) {
            //1、创建客户端
            WebClient client = WebClient.builder()
                    .baseUrl("https://cn.bing.com")//给哪发请求
                    .codecs(clientCodecConfigurer -> {
                        clientCodecConfigurer
                                .defaultCodecs()
                                .maxInMemorySize(256*1024*1024);
                                //响应数据量太大有可能会超出BufferSize,所以这里设置的大一点
                    })
                    .build();
            //2、创建工厂
            HttpServiceProxyFactory factory = HttpServiceProxyFactory
                    .builder(WebClientAdapter.forClient(client)).build();
            //3、获取代理对象
            BingService bingService = factory.createClient(BingService.class);//BingService.class接口名
    
    
            //4、测试调用
            Mono<String> search = bingService.search(city,"APPCODE XXXXXXXX");
            return weather;
    
        }
    
    }

  4. 生产模式----编写配置类config/WeatherConfiguration,@config

    @Bean
    WeatherInterface WeatherInterface(){
    //1、创建客户端
            WebClient client = WebClient.builder()
                    .baseUrl("https://cn.bing.com")//给哪发请求
                    .codecs(clientCodecConfigurer -> {
                        clientCodecConfigurer
                                .defaultCodecs()
                                .maxInMemorySize(256*1024*1024);
                                //响应数据量太大有可能会超出BufferSize,所以这里设置的大一点
                    })
                    .build();
            //2、创建工厂
            HttpServiceProxyFactory factory = HttpServiceProxyFactory
                    .builder(WebClientAdapter.forClient(client)).build();
            //3、获取代理对象
            WeatherInterface WeatherInterface = factory.createClient(WeatherInterface.class);//BingService.class接口名
    return WeatherInterface;
    }
  5. WeatherService

    @Autowired
    WeatherInterface WeatherInterface
    
    
    
    //4、测试调用
            Mono<String> weather = WeatherInterface.search(city,"APPCODE XXXXXXXX");
            return weather;
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/785009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进阶C语言——文件操作(上)

本章文章主要是关于文件教学的&#xff0c;大家可能会对C语言中的文件可能有点陌生&#xff0c;这两个看起老来完全扯不上边的东西&#xff0c;但是实际上他们有很多的关联&#xff0c;本章文章将讲解一些文件的打开和关闭&#xff0c;并和一些库函数一起使用之后的效果&#x…

MATLAB计算变异函数并绘制经验半方差图

本文介绍基于MATLAB求取空间数据的变异函数&#xff0c;并绘制经验半方差图的方法。 由于本文所用的数据并不是我的&#xff0c;因此遗憾不能将数据一并展示给大家&#xff1b;但是依据本篇博客的思想与对代码的详细解释&#xff0c;大家用自己的数据&#xff0c;可以将空间数据…

第一百一十五天学习记录:C++提高:STL初识(黑马教学视频)

STL的诞生 1、长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西 2、C的面向对象和泛型编程思想&#xff0c;目的就是重复性的提升 3、大多数情况下&#xff0c;数据结构和算法都未能有一套标准&#xff0c;导致被迫从事大量重复工作 4、为了建立数据结构和算法的一…

samba挂载报错“mount error(13): Permission denied“

“mount error(13): Permission denied” 环境&#xff1a;CentOS7 挂载报错&#xff1a; [rootchenshuyi ~]# mount -t cifs //127.0.0.1/printers /tmp/samba Password for root//127.0.0.1/printers: mount error(13): Permission denied Refer to the mount.cifs(8) manu…

印制电路板中常用标准有哪些?

在PCB电路板中一般都有哪些标准呢&#xff1f;一起来看看。 1) IPC-ESD-2020&#xff1a;静电放电控制程序开发的联合标准。包括静电放电控制程序所必须的设计、建立、实现和维护。根据某些军事组织和商业组织的历史经验&#xff0c;为静电放电敏感时期进行处理和保护提供指导。…

前端:运用html+css+js模仿百度热搜电影榜鼠标移入特效

前端:运用htmlcssjs模仿百度热搜电影榜鼠标移入特效 1. 实现原理2. 界面布局3. js实现对鼠标移入和移出的监听4. 参考代码如下&#xff1a; 1. 实现原理 百度热搜上电影榜鼠标移入特效如上图所示。个人觉得上述特效实现原理为使用相对定位、绝对定位实现的(鼠标移入和没有移入…

OrangePi Zero2 TTL 连接示意图

OrangePi 目前最方便的就是使用调试串口线进行PC与开发板进行链接。 OrangePi Zero2 GPIO引脚图 TTL连接图 本人使用的型号为CH340模块USB转TTL刷机线&#xff0c;Windows下免驱。 黑线对GND接口&#xff0c;绿线对RX接口&#xff0c;白线对TX接口。

element-ui form表单的动态rules校验

在vue 项目中&#xff0c;有时候可能会用到element-ui form表单的动态rules校验&#xff0c;比如说选择了哪个选项&#xff0c;然后动态显示或者禁用等等。 我们可以巧妙的运用element-ui form表单里面form-item想的校验规则来处理&#xff08;每一个form-item项都可以单独校验…

推荐几个Windows iso镜像下载的网站

文章目录 1. 微软官网2. MSDN网站3. 系统库(xitongku)4. 其他网站最后总结 给大家推荐几个 Windows iso镜像下载网站 1. 微软官网 入口地址&#xff1a;https://www.microsoft.com/zh-cn/software-download 以下载Windows11为例&#xff1a; 1&#xff09;找到下载Windows11…

【教程】查看CPU、GPU架构的拓扑结构和系统信息

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 一些概念 Package&#xff1a;处理器封装。在多处理器系统中&#xff0c;每个物理 CPU 芯片通常被封装在一个单独的封装中&#xff0c;这个封装被称为 Package。一个 Package 可以包含一个或多个物理 CPU 核心。…

计算机组成原理复习-例题版

目录 第一章&#xff1a;计算机系统概论 第二章&#xff1a;机器数 第三章&#xff1a;指令 第四章&#xff1a;机器数运算 第六章&#xff1a;CPU 第七章、第八章、第九章 &#xff1a;总线、辅存、中断 第一章&#xff1a;计算机系统概论 第二章&#xff1a;机器数 ​​…

SVG 简单应用

第一步赋值svg 第二步&#xff1a;fill 填充色设置为“” 第三步设置 svg 颜色和大小

基础算法-单链表

单链表 -> 邻接表:主要用于存储图和树。 双链表 : 主要用于优化某些问题。 单链表的相关操作&#xff1a;1.单链表的初始化 2.将x插到头节点 3.将x插入到下标是k的节点后面 4.将下标是k的节点的后面一个节点删除 1.单链表的初始化 代码&#xff1a; //单链表的初始…

第117天:免杀对抗-反VT沙盒反虚拟机反调试进程APC注入项目保护

知识点 #知识点&#xff1a; 1、反VT-沙盒检测-Go&Python&C 2、反调试-调试检测&进程注入-C 3、反VT反调试-程序保护-工具项目类#章节点&#xff1a; 编译代码面-ShellCode-混淆 编译代码面-编辑执行器-编写 编译代码面-分离加载器-编写 程序文件面-特征码定位-修…

Tripwire 完整性分析工具(Linxu系统)

环境&#xff1a;centos7 工作流程&#xff1a; 当前的系统数据状态建立数据库定期比较系统现状与数据库中的状态属性改变有详细报告分析报告发现入侵 1、安装相关软件包 [roothello ~]# yum install epel-release -y 已加载插件&#xff1a;fastestmirror Repository base …

自学网络安全(黑客)全笔记

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

了解Unity编辑器之组件篇Mesh(三)

Mesh&#xff1a;是一种三维模型的表示形式&#xff0c;它由一系列顶点、三角形&#xff08;或其他多边形&#xff09;和相关属性组成。Mesh用于表示物体的外观和形状&#xff0c;它是可见物体的基本组成部分。通过操作Mesh&#xff0c;开发者可以实现各种视觉效果、物理模拟和…

AI人工智能一键图片/视频换脸-Roop

软件介绍 Roop 换脸技术是一种基于深度学习的人脸图像处理技术。 技术原理 Roop换脸技术的实现主要分为两个步骤&#xff1a;人脸检测与对齐、特征融合与生成。 1.人脸检测与对齐在Roop换脸技术中&#xff0c;首先需要对输入的图像进行人脸检测与对齐。这一步骤的目的是确保…

Ubuntu搭建Samba服务-学习记录

文章目录 Ubuntu安装Samba流程Samba配置文件Samba添加账户配置文件修改Samba服务控制设置开机自动启动通过systemctl 启动服务通过 rc.local 启动 Windows访问参考链接 当前文章仅用于记录&#xff0c;在 Ubuntu中安装使用Samba&#xff0c;在Windows访问 系统环境&#xff1a;…