远程调用--Http Interface

远程调用--Http Interface

前言

这个功能是spring boot6提供的新功能,spring允许我们通过自定义接口的方式,给任意位置发送http请求,实现远程调用,可以用来简化http远程访问,需要webflux场景才可以

1、导入依赖

2、定义接口

java 复制代码
package com.atguigu.boot305ssm.service;

import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.service.annotation.GetExchange;

/**
 * @author jitwxs
 * @date 2024年03月03日 20:39
 */
public interface WeatherInterface {

    @GetExchange(url="/接口的后半截数据",accept = "application/json")
    String getWeather(@RequestParam("area") String city,
                      @RequestHeader("Authorization") String auth);
}

3 创建代理&测试

java 复制代码
    public Mono<Mono<String>> weather(String city){
//        创建客户端
        WebClient client = WebClient.builder()
                .baseUrl("要请求的接口")
                .codecs(clientCodecConfigurer -> {
                    clientCodecConfigurer
                            .defaultCodecs()
                            .maxInMemorySize(256*1024*1024);
//                    响应数据两太大有可能会超过bufferSize,所以这里设置的大一些
                })
                .build();
//        创建工厂
        HttpServiceProxyFactory factory = HttpServiceProxyFactory
                .builder(WebClientAdapter.forClient(client)).build();

//        获取代理对象
        WeatherInterface weatherAPI = factory.createClient(WeatherInterface.class);

        Mono<String> weather = weatherAPI.getWeather("西安","APPCODE 93b7e19861a24c519a7548b17dc46d75");

        return Mono.just(weather);
    }

4、创建成配置变量


相关推荐
zbtlink5 分钟前
Wi-Fi 6路由器技术成熟度解析:它究竟“新”在哪里?
网络·智能路由器
HelloWorld1024!28 分钟前
C++中链表的虚拟头结点:应用场景与使用时机
网络·c++·链表
久违 °32 分钟前
【安全开发】Nmap主机探测技术详解(一)
网络·安全·网络安全
txinyu的博客34 分钟前
DNS 协议
网络
小小代码狗41 分钟前
【无标题】
网络·sql·php
qq_336313931 小时前
java基础-网络编程-UDP
网络
乾元1 小时前
范式转移:从基于规则的“特征码”到基于统计的“特征向量”
运维·网络·人工智能·网络协议·安全
txinyu的博客1 小时前
手写 C++ 高性能 Reactor 网络服务器
服务器·网络·c++
华普微HOPERF1 小时前
BLE6.0规范,如何助力智能门锁突破性能极限?
网络·智能家居·解决方案·智能门锁·芯片模组·蓝牙6.0
程序猿编码1 小时前
无状态TCP技术:DNS代理的轻量级实现逻辑与核心原理(C/C++代码实现)
c语言·网络·c++·tcp/ip·dns