Feign接口方法返回值设置

2023-11-15

                         Feign接口方法返回值设置

一、介绍

随着微服务的广泛应用,越来越多的企业都会使用微服务进行项目开发,在各个服务之间需要通过feign来进行通信,所以在feign调用接口中方法会接受其他服务接口不同类型返回值。

二、返回值设置

1、依据被调用服务接口设置相同返回类型

介绍:微服务A接口getUser 返回List<User>类型,微服务B通过feign调用方法也返回相同的结果类型。

特点:返回类型一一对应,在调用时不需要进行转化直接拿来就可以用。

缺点:扩展性不好,维护性不加。

解释:在目前springboot开发中,接口一般都会返回json类型数据(也就是使用@restController或者使用@ResponseBody注解修饰),就算是对象或者对象集合也是一样的,或者其他自己封装的返回对象。如果有许多不同的返回对象,当这些返回对象在A服务做了修改相应的在B服务的feign接口处也要做修改,相当麻烦且不符合java面向接口编程思想。

2、全部设置为String

介绍:微服务A接口只要被@restController或者使用@ResponseBody注解修饰我统统在微服务Bfeign接口使用String来进行接受。

特点:通过String来接受返回参数,格式一致。

缺点:后面调用需要转换。

代码介绍:

// 微服务A controller 已经使用@restController修饰
@PostMapping(value="/getAllQuestionBank",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
	public List<QuestionBankDto> getAllQuestionBank(){
		return baseinfoQuestionMange.getAllQuestionBank();
}

// 微服务B feign接口 使用String进行接受
@PostMapping(value="/baseinfo/getAllQuestionBank")
String getAllQuestionBank();

// 微服务B 当需要调用feign信息时需要强转成List<QuestionBankDto>格式


// 调用微服务获取题库章节信息,该处强制使用try catch进行包裹
String questionBankInfo = baseInfoApi.getAllQuestionBank();
List<QuestionBankDto> mysqlQuestionBank = objectMapper.readValue(questionBankInfo,new TypeReference<ArrayList<QuestionBankDto>>(){});

只要你导入一下springboot依赖,它默认就给你导入了Jackson jar包

注意事项:使用该方式时需要将ObjectMapper配置到bean容器中。

 

3、总结

项目不同,需求不同,两种方式没有谁对谁错之分,依据自己项目需求进行选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Feign接口方法返回值设置 的相关文章

随机推荐

  • 文件包含的漏洞、原理、利用

    最近的总结都比较简单 但不是在水 只是在我学习过程中总结的觉得真的有用的知识 还有就是有些代码发不出来我也没办法 所以就有所调整 文件包含原理是啥 文件包含漏洞 即file inclusion 意思是文件包含 是指当服务器开启allow u
  • Runnable和Callable的区别

    Runnable和Callable的区别 Callable接口 Runnable接口 Runnable和Callable的区别 相同点 不同点 注意点 Callable工作的Demo ExcutorService中的excutor和subm
  • 为什么selenium自动化测试能打开浏览器但无法打开网页

    from selenium webdriver import Chrome chrome Chrome executable path C Program Files Google Chrome Application chrome exe
  • Django框架实战:搭建一个小型的服务器运维网站(一)

    本文会遇到很多的代码 如果想要源代码的小伙伴 我已经分享到下方了 想要的可以自己研究一下 本人从事Python开发多年 很多小伙伴说想学一下web中的Django框架 我就用Django框架做一系列的实战项目 欢迎大家订阅 欢迎大家订阅微信
  • MySQL存储很长500的汉字选用字符类型

    问题 我需要用MySQL存储一段文字 在纠结用什么类型 百度了一下选用这些 问题 MySQL怎么存储大段文字1000字左右的 解决 快速通道 mysql里怎么存储很多汉字 我们得了解一下字符类型 一般在保存少量字符串的时候 我们会选择 CH
  • Python输出文字改变颜色

    Python输出文字改变颜色的方法 一 使用注释性输出 一 基本语法 033 显示方式 前景色 背景色m 033 0m 显示方式 前景色 背景色都为可选参数 选择自己需要的即可 而且顺序可变非固定 但建议按照默认顺序书写 注 可添加在pri
  • python:openpyxl取某一行、某一列、应用excel函数

    前言 话外 如何取某一列这个 真的是气死我气死我气死我拉 依然记录学习使用 属于昨天内容的进阶版 如果想要基础操作 如创建excel 创建sheet 可以点击下方链接哦 python openpyxl基础操作 一 创建 xlsx文件 豆包的
  • sqlserver 2012 出现自增ID跳段试增加,中间却查不出数据?求助大神

    sqlserver 2012 出现自增ID跳段试增加 中间却查不出数据 求助大神 数据由自动采集软件cimplicity采集 自动插入到这个表 这个过程无法进行干预 但是数据库出现采集数据ID自增跳崖试变化 直接由32给干到了1047 中间
  • 面向ad-hoc查询的实时SQL分析系统

    Impala Hive现状分析与前景展望 Impala和Hive野史 提到Impala就不得不提Google的Dremel 处理PB级数据规模的基于SQL的交互式 实时数据分析系统 Dremel是Google推出的PaaS数据分析服务Big
  • 第五章Docker

    文章目录 什么是Docker 应用部署的环境问题 Docker解决依赖兼容问题 Docker解决操作系统环境差异 小结 Docker与虚拟机 Docker架构 镜像和容器 DockerHub Docker架构 安装Docker 卸载 可选
  • 一文通透——Kali Linux基础入门

    学习Kali 郑重声明 此文章可能会包含敏感以及危险的命令 命令有风险 回车需谨慎 此文章仅供学习交流与参考使用 禁止运用于任何非法行动或测试中 若有预期之外的后果 将不承担任何责任 再次进行警告与提醒 root KaLi Erhe cat
  • Apache apisix默认密钥漏洞(CVE-2020-13945)

    目录 漏洞描述 影响版本 漏洞复现 声明 本文仅供学习参考 其中涉及的一切资源均来源于网络 请勿用于任何非法行为 否则您将自行承担相应后果 本人不承担任何法律及连带责任 漏洞描述 Apache APISIX 是一个动态 实时 高性能的 AP
  • tensorflow1.14(一、初识)

    默认图与自定义图 import tensorflow as tf a tf constant 1 b tf constant 3 c tf constant 5 name name1 d tf constant 7 name name1 n
  • 第八讲:神州三层交换机静态路由配置

    静态路由是指由网络管理员手工配置的路由信息 当网络的拓扑结构或链路状态发生变化时 网络管理员需要手工修改路由表中的静态路由信息 静态路由信息在默认情况下不会传递给其他路由器 静态路由一般适用于比较简单的网络环境 静态路由的优点 使用静态路由
  • 使用idea创建java web项目

    创建web项目有很多方法 就说一个最简单的方法吧 创建一个java项目 点击创建 右击项目选择添加框架支持 勾选上web应用程序 点击确定 再点击当前文件 编辑配置 点击加号 选择Tomcat服务器 本地 也可以选择其他服务器 点击配置 选
  • 软件测试知识(二)

    软件开发阶段一般又划分成需求分析 概要设计 详细设计 编码与单元测试 组装与系统测试以及安装与验收等6个阶段 系统测试是将软件系统与硬件 外设和网络等其他因素结合 对整个软件系统进行测试 常见的系统测试主要有恢复测试 安全性测试 强度测试
  • 求解三位正整数各位之和

    描述 从键盘上输入一个三位整数 分别求出其的个位 十位和百位数字 并计算三位数字之和 输出格式 使用 format格式输出 请参阅输入输出示例 n input l list n a 0 for i in l a eval i a print
  • Centos5.8 x86_64下安装DRBD+Heartbeat+NFS

    实验环境 vmware workstation os Centos5 8 x86 64 编辑两台虚拟机分别新增一块网卡作为心跳检测 新增一块4G的硬盘 大小保持一致 两台机器的基本情况如下所示 centos1 mypharma com 19
  • python之路 第三章 逻辑判断语句——布尔类型和比较运算符、if语句、if else、if elif else、嵌套

    目录 第三章 逻辑判断语句 01 布尔类型和比较运算符 02 If语句的基本格式 03 if else语句 04 if elif else组合使用的语法 05 判断语句的嵌套 第三章 逻辑判断语句 01 布尔类型和比较运算符 在生活中 我们
  • Feign接口方法返回值设置

    Feign接口方法返回值设置 一 介绍 随着微服务的广泛应用 越来越多的企业都会使用微服务进行项目开发 在各个服务之间需要通过feign来进行通信 所以在feign调用接口中方法会接受其他服务接口不同类型返回值 二 返回值设置 1 依据被调