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

微服务项目调用外部接口

微服务开发过程当中,并且是在进行多项目开发时,难免的会出现调用别人开发的接口获取数据这种场景,但是到这里通常可以以下两种方式进行调用获取。(后端调用)

  • 通过openFegin进行接口转发直接调用
  • 通过ribbon负载均衡获取ip进行拼接url调用

通过openFegin实现

可参考该文 4.3 Spring Cloud 微服务解决方案 详解

通过ribbon负载均衡实现

首先我们将服务发现进行注入进来

    @Autowired
    private DiscoveryClient discoveryClient;

之后我们封装一个方法,用于通过服务名称来再通过Ribbon的负载均衡进行转发到对应的机器,获取其IP

    public String getUri(String serviceName) {
        AtomicReference<URI> uri = new AtomicReference<>();
        List<ServiceInstance> serviceInstances = discoveryClient.getInstances(serviceName);
        serviceInstances.forEach(serviceInstance -> {
            uri.set(serviceInstance.getUri());
        });
        return uri.get().toString();
    }

最后我们通过拼接url再使用hutools的Http工具进行调用进行发送请求

	JSONObject object = new JSONObject();
    String url = getUri("service-lzq-ticket") + "/service-lzq-ticket/demo";
    String res = HttpRequest.post(url)
        .body(String.valueOf(object))
        .execute().body();
    log.info("object json ============>>>>>>>>>{}", String.valueOf(object));
    log.info("res =================>>>>>>> {}", res);

最后我们通过JSON工具对字符串转成实体对象

    User data = JSONUtil.toBean(res, com.lzq.common.User.class, false);

相关文章:

  • 【Python】第八课 异常处理
  • Atomic Mail Sender 9.6.X 中文版Crack
  • 【重识云原生】第六章容器6.1.4节——Docker核心技术LXC
  • mysql—自增长和索引
  • 【C语言】带你深入剖析字符串相关知识(详细讲解+源码展示)
  • PostgreSQL 常用管理命令
  • Canny边缘检测数学原理及Python代码实现
  • 代码解析MixFormer: Mixing Features across Windows and Dimensions
  • 墨者-网络安全
  • Thread类的基本用法
  • Vue——方法与事件、 样式绑定、数据绑定、面试题、笔试题
  • DCDC Bootstrap自举电路
  • 练习前端案例
  • Completed 404 NOT_FOUND,Whitelabel Error Page
  • 微信公众号多题库查题系统
  • 03Go 类型总结
  • Android单元测试 - 几个重要问题
  • Angular6错误 Service: No provider for Renderer2
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Effective Java 笔记(一)
  • JS字符串转数字方法总结
  • Python利用正则抓取网页内容保存到本地
  • React16时代,该用什么姿势写 React ?
  • Redis在Web项目中的应用与实践
  • spark本地环境的搭建到运行第一个spark程序
  • 服务器之间,相同帐号,实现免密钥登录
  • 高性能JavaScript阅读简记(三)
  • 简单数学运算程序(不定期更新)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 协程
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 第二十章:异步和文件I/O.(二十三)
  • 国内开源镜像站点
  • ​插件化DPI在商用WIFI中的价值
  • ​力扣解法汇总946-验证栈序列
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #QT(TCP网络编程-服务端)
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (LeetCode 49)Anagrams
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)http-server应用
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET CORE Aws S3 使用
  • .net core 控制台应用程序读取配置文件app.config
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net mvc 获取url中controller和action