feign调用,如何通过指定的服务名来调用,或者通过指定的url调用,方便调用本地的服务,或者调用指定的测试环境的服务

1. feign client 通过服务名来调用

 InnerOssEndpointClient 类是  feign client方法声明的类
 name 就是服务名,这里默认是通过服务名来调用。服务名在哪呢,在注册的nacos注册中心能看到

1.1 调用方的代码

关键看 @FeignClient注解的代码,name 指定了调用的服务名。服务名为 file-system

// 这是调用方的代码

@Service
public class OssEndpointServiceImpl implements OssEndpointService {

    @Resource
    private InnerOssEndpointClient ossEndpoint;

    @Override
    public R<AnnexVo> putFile(MultipartFile file, String sourceCode) {

        CjtDataSyncCurrentUtil.initUserFilter(tenantId);
        return ossEndpoint.putFile(getToken(),file);
    }


}


// InnerOssEndpointClient  feign client方法声明的类
// name 就是服务名, 这里默认是通过服务名来调用。服务名在哪呢,在注册的nacos注册中心能看到
@FeignClient(name = "file-system",contextId = "ossEndpoint")
public interface InnerOssEndpoint {
    @PostMapping(value = "/oss/endpoint/put-file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    CjtResult<AnnexVo> putFile(@RequestHeader("Authorization") String token, @RequestPart(value = "file") MultipartFile file);

}

1.2 被调用方的代码

这里就是一个普通的 restful api ,接收调用请求

// 这里就是一个普通的 restful api 

@RestController
@AllArgsConstructor
@RequestMapping("/oss/endpoint")
@Api(value = "对象存储端点", tags = "对象存储端点")
public class OssEndpoint {

    /**
	 * 上传单个文件
	 *
	 * @param file 文件
	 * @return ObjectStat
	 */
	@SneakyThrows
	@PostMapping("/put-file")
	public R<Annex> putFile(@RequestParam MultipartFile file) {
		return R.data(getAnnexByUpload(file));
	}




}

nacos 上,这里就能看到注册了哪些服务,上面的服务名就是和 nacos这里的服务名要一致才能调通!! 

2. feign client 通过url来调用

上面是通过服务名来调用了,那假如我想调用,我本地的服务,没有注册到nacos的服务。那怎么调用呢

2.1 这是调用方的代码

关键看 @FeignClient注解的代码, 加了一个url,url指定的 本地的地址

@FeignClient(name = "file-system",contextId = "ossEndpoint", url = "http://localhost:8080/blade-system")
public interface InnerOssEndpoint

// 这是调用方的代码

@Service
public class OssEndpointServiceImpl implements OssEndpointService {

    @Resource
    private InnerOssEndpointClient ossEndpoint;

    @Override
    public R<AnnexVo> putFile(MultipartFile file, String sourceCode) {

        CjtDataSyncCurrentUtil.initUserFilter(tenantId);
        return ossEndpoint.putFile(getToken(),file);
    }


}


// InnerOssEndpointClient  feign client方法声明的类
// name 就是服务名,同是也指定了url,那么这里就以url为准。只要写了url就根据url来调用
 
@FeignClient(name = "file-system",contextId = "ossEndpoint", url = "http://localhost:8080/blade-system")
public interface InnerOssEndpoint {
    @PostMapping(value = "/oss/endpoint/put-file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    CjtResult<AnnexVo> putFile(@RequestHeader("Authorization") String token, @RequestPart(value = "file") MultipartFile file);

}
2.2 被调用方代码和 上面的1.2 是一样的。就不贴了

3. feign client 通过url来调用,特定的环境

3.1 调用方的代码、这里和上面的 2.1 大同小异

关键看 @FeignClient注解的代码, 加了一个url,url指定的 是一个绝对地址,这样的话,就在本地就可以调用测试环境, 或者生产环境的服务了。方便debug,排查一些问题。

@FeignClient(name = "file-system",contextId = "ossEndpoint", url = "http://www.baidu.com/a/blade-system")
public interface InnerOssEndpoint

// 这是调用方的代码

@Service
public class OssEndpointServiceImpl implements OssEndpointService {

    @Resource
    private InnerOssEndpointClient ossEndpoint;

    @Override
    public R<AnnexVo> putFile(MultipartFile file, String sourceCode) {

        CjtDataSyncCurrentUtil.initUserFilter(tenantId);
        return ossEndpoint.putFile(getToken(),file);
    }


}


// InnerOssEndpointClient  feign client方法声明的类
// name 就是服务名,同是也指定了url,那么这里就以url为准。只要写了url就根据url来调用
 
@FeignClient(name = "file-system",contextId = "ossEndpoint", url = "http://www.baidu.com/a/blade-system")
public interface InnerOssEndpoint {
    @PostMapping(value = "/oss/endpoint/put-file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    CjtResult<AnnexVo> putFile(@RequestHeader("Authorization") String token, @RequestPart(value = "file") MultipartFile file);

}
3.2 被调用的代码,和上面的1.2 一样

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

golang学习随便记16-反射

为什么需要反射 下面的例子中编写一个 Sprint 函数&#xff0c;只有1个参数&#xff08;类型不定&#xff09;&#xff0c;返回和 fmt.Fprintf 类似的格式化后的字符串。实现方法大致为&#xff1a;如果参数类型本身实现了 String() 方法&#xff0c;那调用 String() 方法即可…

ARM64汇编05 - MOV系列指令

MOV(wide immediate) MOV 可以将一个立即数移动到寄存器中。 .text:0000000000000834 80 46 82 D2 MOV X0, #0x1234 ; Keypatch modified this from:MOV X0, #0x1234 对应的汇编代码为&#xff1a;80 46 82 D2 看手册可知&#xf…

【强化学习抓取】偏机器人领域(略)

文章目录 1. A Grasp Pose is All You Need: Learning Multi-fingered Grasping with Deep Reinforcement Learning from Vision and Touch摘要和结论引言相关工作模型框架 1. A Grasp Pose is All You Need: Learning Multi-fingered Grasping with Deep Reinforcement Learni…

深入解析Kafka中Replica的妙用

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深入解析Kafka中Replica的妙用 前言Replica的基本概念基本概念和原理&#xff1a;Replica在消息传递中的关键角色&#xff1a; 副本的创建与配置创建 Replica 步骤&#xff1a;Replica 相关的常见配置…

UnoCSS原子CSS引擎—原子化真的是现代前端CSS利器?

追忆往昔&#xff0c;穿越前朝&#xff0c;CSS也是当年前端三剑客之一&#xff0c;风光的很&#xff0c;随着前端跳跃式的变革&#xff0c;CSS在现代前端开发中似乎有点默默无闻起来。 不得不说当看到UnoCss之前&#xff0c;我甚至都还没听过原子化CSS这个概念&#xff0c;很久…

如何用BI工具对数据进行预处理?数据分析的这项技巧你必须掌握。

在当今数字化时代&#xff0c;数据不仅是企业决策的基础&#xff0c;也是创新和发展的关键推动力。在面对庞大而复杂的数据集时&#xff0c;如何进行高效的预处理成为了数据分析领域中至关重要的一步。 在进行数据处理和分析的日常工作中&#xff0c;业务普遍使用Excel和SQL这两…

基于JavaWeb开发的私人牙科诊所管理系统【附源码】

基于JavaWeb开发的私人牙科诊所管理系统[附源码] &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &…

嵌入式面经-ARM体系架构-寄存器与异常处理

ARM寄存器组织 寄存器概念 寄存器是处理器内部的存储器&#xff0c;没有地址 寄存器作用 一般用于暂时存放参与运算的数据和运算结果 在某个特定模式下只能使用当前模式下的寄存器&#xff0c;一个模式下特有的寄存器别的模式下不能使用 一共是40个寄存器 寄存器分类 通用寄…

勾八头歌之数据科学导论—数据预处理

第1关&#xff1a;引言-根深之树不怯风折&#xff0c;泉深之水不会涸竭 第2关&#xff1a;数据清理-查漏补缺 import numpy as np import pandas as pd import matplotlib.pyplot as pltdef student():# Load the CSV file and replace #NAME? with NaNtrain pd.read_csv(Tas…

http协议中的强缓存与协商缓存,带图详解

此篇抽自本人之前的文章&#xff1a;http面试题整理 。 别急着跳转&#xff0c;先把缓存知识学会了~ http中的缓存分为两种&#xff1a;强缓存、协商缓存。 强缓存 响应头中的 status 是 200&#xff0c;相关字段有expires&#xff08;http1.0&#xff09;,cache-control&…

C++中类模板的定义和使用

类模板的定义和使用 引言类模板声明和定义有问有答 示例运行结果注意参数传递ref 引言 类模板就是一个模板&#xff0c;但是数据可以适用多种类型。类模板使用时需要模板的特例化&#xff0c;就变成了模板类。 本文只要是记录一下模板的使用。同时对于引用和右值引用传参做一下…

几个redis常用命令

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 ping&#xff1a;测试连接是否存活 例如&#xff1a;测试当前redis数据库是否存活 127.0.0.1:6379> ping #返回PONG&am…

RHEL9 DNF/YUM仓库管理软件包

DNF/YUM仓库管理软件包 一个基于RPM包的软件包管理器能够从指定的服务器自动下载RPM包并且安装&#xff0c;自动处理依赖性关系&#xff0c;并且一次性安装所有依赖的软件包C/S模式 Server服务端提供RPM软件包与数据库文件repodataClient客户端使用dnf仓库 常用组合 组合参…

半导体湿法技术有什么优势

湿法蚀刻工艺的原理是使用化学溶液将固体材料转化为液体化合物。选择性非常高&#xff0c; 因为使用的化学品可以非常精确地适应单个薄膜。对于大多数解决方案&#xff0c;选择性大于100:1。 批量蚀刻 在批量蚀刻中&#xff0c;可以同时蚀刻多个晶圆&#xff0c;过滤器和循环…

返回值不同算方法重载么?为什么?

1、典型回答 返回值不同不算方法重载 方法重载&#xff08;Overloading&#xff09;是指在同一个类中定义了多个同名方法&#xff0c;但它们的参数列表不同&#xff0c;方法重载要求方法&#xff1a; 名称相同参数类型、参数个数或参数顺序&#xff0c;至少有一个不同 方法…

【SQL】601. 体育馆的人流量(with as 临时表;id减去row_number()思路)

前述 知识点学习&#xff1a; with as 和临时表的使用12、关于临时表和with as子查询部分 题目描述 leetcode题目&#xff1a;601. 体育馆的人流量 思路 关键&#xff1a;如何确定id是连续的三行或更多行记录 方法一&#xff1a; 多次连表&#xff0c;筛选查询方法二&…

普发Pfeiffer氦质谱检漏仪HLT260/270系列电路图电路板图纸和接线针脚含义非常详细内部国外资料中英操作说明培训PPT课件打包13个文档

普发Pfeiffer氦质谱检漏仪HLT260/270系列电路图电路板图纸和接线针脚含义非常详细内部国外资料中英操作说明培训PPT课件打包13个文档

使用 gin-api-mono 创建简单的 TODO 服务

介绍 首先介绍一下 gin-api-mono 这个项目&#xff0c;这个项目是由 go-gin-api 作者基于用户的需求衍生出来的一个项目。因为有些用户觉得 go-gin-api 是一个前后端都有的一个开源项目&#xff0c;对于很多用户来说&#xff0c;前端部分是不需要的&#xff0c;所以作者看到这…

护眼灯什么价位的好用?推荐五款好价护眼台灯

如今&#xff0c;我们不难发现许多年轻人早早地就戴上了眼镜&#xff0c;近视问题日益严重。在改善近视问题的众多因素中&#xff0c;营造适宜的照明环境&#xff0c;特别是选择一款合适的护眼台灯&#xff0c;显得尤为重要。然而&#xff0c;对于初次选购护眼台灯的人来说&…

通过sqoop把hive数据到mysql,脚本提示成功,mysql对应的表中没有数

1、脚本执行日志显示脚本执行成功&#xff0c;读写数量不为0 2、手动往Mysql对应表中写入数据十几秒后被自动删除了 问题原因&#xff1a; 建表时引擎用错了&#xff0c;如下图所示 正常情况下应该用InnoDB