原生feign调用第三方接口

用Feign实现第三方的HTTP请求 最近,在使用spring cloud框架时,发现feign也能实现三方请求,而且实现很简单,请求接口的结构很清晰,便果断学习一波。记录一下。本次使用的依赖仅有openfeign。 1. 开门见山,Feign调用的简单实现 maven依赖 <!-- openfeign依赖 --> <dependency> <groupId&... 阅读详情

转发原文链接:https://blog.youkuaiyun.com/qq_20552525/article/details/83001342

最近做一个小项目,小到只有一个页面,和几个接口而已。
因为项目是自己一个人在做,所以所有的定义都可以自己做主。
项目的目的是为了推送给第三方页面收集到的数据,所以对接是重头戏。
之前对接过各种第三方短信接口,用的无非是httpClient的get/post,用多了就想换一个技术熟悉一下。

一、引入依赖

啥也不说,先引入一堆东西,不是每一个都有用,但是用到了就很方便。

core:是必须要引的,核心依赖。

gson/jackson:gson我的代码中有用到,处理json数据。

<dependency>
	<groupId>io.github.openfeign</groupId>
	<artifactId>feign-core</artifactId>
	<version>9.5.0</version>
</dependency>
<dependency>
	<groupId>com.netflix.feign</groupId>
	<artifactId>feign-gson</artifactId>
	<version>8.18.0</version>
</dependency>
<dependency>
	<groupId>io.github.openfeign</groupId>
	<artifactId>feign-slf4j</artifactId>
	<version>9.5.0</version>
</dependency>
<dependency>
	<groupId>io.github.openfeign</groupId>
	<artifactId>feign-hystrix</artifactId>
	<version>9.5.0</version>
</dependency>
<dependency>
	<groupId>io.github.openfeign</groupId>
	<artifactId>feign-jackson</artifactId>
	<version>9.5.0</version>
</dependency>

二、写接口

下面这个接口是免费的,公开的,所以应该不会涉及到利益问题。


package com.geewise.ddsp.phonecollect.api;
 
import com.alibaba.fastjson.JSONObject;
import feign.Param;
import feign.RequestLine;
 
import java.net.MalformedURLException;
 
/**
 * 手机号查询地区
 */
public interface DetailPhoneClient {
    /**
     * http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel=13322222222&qq-pf-to=pcqq.c2c
     * response:{"response":{"13322222222":{"detail":{"area":[{"city":"大连"}],"province":"辽宁","type":"domestic","operator":"电信"},"location":"辽宁大连电信"}},"responseHeader":{"status":200,"time":1539141421138,"version":"1.1.0"}}
     * @param tel
     * @return
     */
    @RequestLine("GET /open/location?tel={tel}&qq-pf-to=pcqq.c2c")
    JSONObject getDetailByPhone(@Param(value = "tel") String tel);
}

三、使用

在controller层中可以直接调用,直接上代码 。

最重要的地方就是Feign.builder()这一段,下面是判断,因为是第三方的,不是自己写的接口,判断的比较细了,有点啰嗦。

 /**
     * 用手机号查询所属地域
     *
     * @param phone 手机号
     * @return 所属地域
     */
    private String getCityByPhone(String phone) {
        DetailPhoneClient detailPhoneClient = Feign.builder()
                .decoder(new GsonDecoder())
                .target(DetailPhoneClient.class, "http://mobsec-dianhua.baidu.com/dianhua_api");
        JSONObject detailByPhone = detailPhoneClient.getDetailByPhone(phone);
        logger.info("查询手机号所属地区:" + detailByPhone);
        // 获取手机号信息的数据
        if (!detailByPhone.containsKey("response")) {
            return null;
        }
        JSONObject response = detailByPhone.getJSONObject("response");
        if (!response.containsKey(phone)) {
            return null;
        }
        JSONObject phoneDetail = response.getJSONObject(phone);
        if (!phoneDetail.containsKey("detail")) {
            return null;
        }
        JSONObject detail = phoneDetail.getJSONObject("detail");
        if (!detail.containsKey("area")) {
            return null;
        }
        JSONArray area = detail.getJSONArray("area");
        if (area.size() == 0) {
            return null;
        }
        JSONObject cityJsonObject = area.getJSONObject(0);
        if (!cityJsonObject.containsKey("city")) {
            return null;
        }
        return cityJsonObject.getString("city");
    }

四、深入理解

会用了,再来了解一下。

权威的宝典:github-openfeign(由于这个写的比较通俗易懂,又比较权威,所以代码就不copy过来了,省时省力)

1、Gson/Jackson(处理json格式的数据)两者都包括一个编码器,一个解码器

2、Sax/JAXB(处理xml格式的数据,因为我还没有接触到这种格式的,毕竟现在json比较流行嘛,只能先写到这里,用到再说)

3、OkHttp,JAX-RS,Ribbon(负载均衡),Hystrix(熔断机制)。这几个都没有用到,等用到了 ,再上官网上查吧

4、可以在接口上添加header,具体的可以上githua上面查

@Headers("Content-Type: application/xml")

有时间写一下和cloud结合的怎么用

使用feign远程调用接口 项目中开发中,经常会用到调用其他项目的接口 或者第三方接口的情况,以前经常使用的是spring 的restTemplate 或者httpClient,但是使用每次都需要写一些公共的调用代码,比较麻烦。 feign 则能够比较好的解决了这个问题,不是spring cloud 项目也可以使用。 一,是什么 feign 是Netflix 开发的声明式的http客户端,可以帮我们更加方便的调用http接口。在使用时候,就像调用本地方法一样,创建一个接口,然后在接口上添加一些注解,代码就可以完成了。spring 阅读详情

相关推荐

离散数学 --- 图论基础 --- 图的同构,通路与回路,可达性与最短通路

同一个图(这里的图是抽象的数学定义)可以有不同的图形表示方法1.重数:两点之间的平行边的个数1.得到 n!的过程,一个图中的一个结点在另一个图中对应的结点有n种可能(黄框中定义的图来讨论),这个对应好后下一个结点有 n - 1 种可能,再下一个有n-2种,直到最后一个为1,所有可能的结果就等于 n * (n - 1) *(n - 2)*....*1 = n!2.虽然说找对应结点很困难,但不是没有规律可循的。比如1.两个相互对应的结点的度数要相同;

qq_51947882的博客 7441

Golang 面向对象编程

点击上方蓝色“Golang来啦”关注我哟加个“星标”,天天 15 分钟,掌握 Go 语言via:https://medium.com/technofunnel/golang-object...

Seekload 270

WorkBuddy Skill赋能HYSYS与Comsol:AI工作台下的仿真自动化实践

AI Agent正将工业软件自动化带向新高度。在工程仿真领域,流程模拟与多物理场分析常因重复性操作而效率低下,Aspen HYSYS的批量工况调整、Comsol的参数扫描与网格重构均属此类。WorkBuddy这类AI工作台通过Skill将软件二次开发能力封装为可插拔技能包,利用HYSYS的COM/OLE接口和Comsol的Java API,实现自然语言指令到自动化执行的转变。其技术价值在于降低自动化门槛、沉淀工程经验,并支持日志审计与异常重试。在实际应用中,无论化工流程的灵敏度分析,还是激光焊接、移动网格等

weixin_29055699的博客 301

SpringCloud使用Feign调用第三方接口

最近工作中需要用到第三方接口,常规解决方案有三种:1.使用HttpClient。2.使用resTemplate。3.使用Feign。毫无疑问,第三种方法代码量最少而且与项目中微服务内部远程调用编码风格统一。 第一步,引入openfrign依赖 第二步,编写接口远程调用第三方服务,这里以百度地图地理编码接口举例,ak自行申请。 注意:1.网上关于@PathVariable的使用都是复制粘贴的获取URL中参数的作用,但是其实@PathVariable......

huangdesenCN的博客 8258

SORT算法在遮挡下总跟丢?深入OC-SORT源码,拆解其三大创新点如何解决卡尔曼滤波的顽疾

本文深入解析OC-SORT算法如何通过三大创新点解决多目标跟踪中的卡尔曼滤波顽疾。OC-SORT引入在线平滑虚拟轨迹技术(OOS)、观测中心动量匹配机制(OCM)和基于最后观测的轨迹恢复(OCR),显著提升了遮挡场景下的跟踪性能。实验数据显示,相比传统SORT算法,OC-SORT在MOT17数据集上MOTA提升5.7%,遮挡恢复成功率提高64.2%,为Multi-Object Tracking领域带来突破性进展。

weixin_42547431的博客 240

【Unity人物动画】SALSA With RandomEyes (语音生成嘴型/人物说话) 使用

SALSA使用探索 之前做项目时想做人物说话的嘴部动作,因为我们的语音是AI合成的,语音片段很多,如果能根据语音生成嘴部动画,那将极大便利我们的工作。后面是找到了SALSA的这款插件,并摸索出使用方法。 1 插件介绍 官方网站:https://crazyminnowstudio.com/ 一个能做2D纸片人和3D人物模型嘴部和眼睛动画的插件,由两人组成的独立工作室(疯狂米诺工作室)开发。 插件全名为SALSA With RandomEyes,2014年上架Asset Store,目前是已下架,替换为新版本

里约热内驴的博客 1万+

第二篇 服务的消费-声明式调用 (Feign)

上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务 一、Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。 简而言之: Feign 采用的是基于接口的注解 Fei

GSON的博客 370

Linux SMP系统多核启动机制详解

对称多处理(SMP)是现代操作系统支持多核并行计算的基础架构。其核心原理是通过引导处理器(BSP)初始化系统环境后,通过处理器间中断(IPI)机制唤醒应用处理器(AP)。在x86架构中,AP启动时处于实模式,需要特殊的trampoline代码完成保护模式切换和分页设置。这种设计既保证了系统初始化的正确性,又实现了多核并行处理的性能优势。理解SMP启动流程对优化系统启动速度和调试多核问题至关重要,特别是在云计算和嵌入式系统中,高效的SMP初始化能显著提升系统响应能力。本文以Linux内核为例,深入解析了从BS

weixin_35006125的博客 290

Feign调用第三方http接口

我们平常在开发的时候,经常会碰到调用第三方的接口,这个时候我们可以使用httpClient或者restTemplate,但是这两种方式相比较与Feign调用,都会麻烦一点儿。Feign是声明式服务调用客户端,既规范又简洁,帮我们屏蔽了http调用的复杂性,而且完美切入springcloud技术体系。 下面就来演示一下如何使用Feign来调用第三方的客户端。 @FeignClient(name = "my-feign-client...

远方的少年 9817

【论文笔记】LIME: low-light image enhancement via illumination map estimation

【论文笔记】LIME: low-light image enhancement via illumination map estimation 一篇低光图像增强,引用超1000次的经典论文

weixin_45565519的博客 1794

096、PCIE环回模式(Loopback):调试时自己和自己对话的利器

摘要: PCIE环回模式是调试利器,通过让芯片内部数据自环来定位问题层级。文章详解三种环回模式:物理层环回验证基础收发,数据链路层环回测试DLLP机制,事务层环回验证端到端协议。分享了实战中的典型问题(时钟异常、状态机卡死、计数器失真)和"从下往上"的调试流程,强调要区分调试与生产功能,建议早期验证环回模式。通过具体代码示例和调试案例,说明合理使用环回模式能显著提升排查效率,是PCIE调试必备技能。(149字)

z534437748的博客 106

Spring-cloud-openfeign-Main方法调用原生API发送HTTP请求

怀念二抱三抱

文天大人 154

论文复现5:UMI Universal Manipulation Interface

UMI 采用手持式夹具,加上精心的界面设计,可实现便携式、低成本和信息丰富的数据收集,以进行具有挑战性的双手和动态操作演示。配备这些功能后,UMI 框架解锁了新的机器人操作功能,只需更改每个任务的训练数据,即可实现零样本可推广的动态、双手、精确和长视野行为。我们通过全面的现实世界实验展示了 UMI 的多功能性和有效性,其中通过 UMI Zeroshot 学习的策略在对不同的人类演示进行训练时可以推广到新的环境和对象。项目主页:https://umi-gripper.github.io/

github_38060285的博客 1974

Spring Boot 调用外部接口的 3 种方式,还有谁不会?!

Get请求。

程序员高级码农的博客 401

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringBoot+SpringCloud+Feign 调用第三方接口,或服务接口

SpringCloud中文文档 Maven依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ...

独立行走的小黄 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

通过Feign远程调用第三方接口

远程调用第三方接口的有几种方法,常用就是用HttpClient等插件,其实SpringCloud的Fegin组件也可以 用于第三方接口调用。 1、引入Maven插件 <!-- feign核心包 --> <dependency> <groupId>io.github.openfeign</grou...

Carson073的博客 4910

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot集成Feign组件调用第三方接口【手把脚教学】

文章目录SpringBoot集成Feign组件调用第三方接口一、 POM文件引入二、项目整体结构示意1、启动类2、yml 配置3、rmi模块代码4、Controller调用代码三、 一些说明 SpringBoot集成Feign组件调用第三方接口 一、 POM文件引入 版本控制 <properties> <java.version>1.8</java.version> <!-- openfeign -->

YangzaiLeHeHe的博客 4084

使用Feign调用服务接口

一看就会的使用Feign调用服务接口,使微服务的各个模块相互之间可以进行数据访问。赶快动动小手练练吧。

一枚小爪哇(Java)的博客 1万+

在微服务中使用Feign调用第三方的接口

在微服务中使用Feign调用第三方的接口 概述:在微服务中我们一般使用FeignClient作为服务内部组件的调用,如下: @FeignClient(name = "xxx", fallbackFactory = xxxClientFallback.class) public interface xxxClient { //接口方法 } 因为name一般都是一个常量,即注册到注册中心的服务,不太适合配置成一个url,那么使用FeignClient怎么调用第三方的接口呢? 接下来介绍一下一种使用Feign

qjx的博客 9789

Feign实现远程接口的调用

Feign实现远程接口的调用 一.Feign介绍 在开发中,我们常用httpClient去远程调用其他系统的接口,一般情况下,需要我们指定调用的url,feign也实现了一套远程调用的方法,并且更为优雅。 前提:1.被调用的模块注册到eureka中,能正常运行 2.feign接口文件夹要和启动类在同一个目录下, 否则需指定包名, @EnableFeignClients(basePackages="com.**.***") 二.Feign使用步骤 不同版本依赖可...

狗狗大蛇 6918

SpringCloud(12) —— Feign:使用接口方式调用服务

1.Feign简介 Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端 只需要创建一个接口,然后添加注解即可使用Feign Feign,主要是社区版,大家都习惯面向接口编程。这个是很多开发人员的规范。调用微服务访问两种方法 微服务名字 【ribbon,即前面我们使用ribbon实现负载均衡的时候选中哪一个服务集群是依据注册中心

Jzandth的博客 8万+

探索 Java 调用第三方接口的 N 种姿势:从 Feign 请求谈起

本文全面介绍了Java中调用第三方接口的多种技术方案,包括HTTP客户端类(Apache HttpClient、OkHttp等)、声明式HTTP客户端(Feign、Retrofit)、RPC框架(Dubbo、gRPC)以及响应式编程类(WebClient)。重点分析了Feign设置请求头的四种方式:@RequestHeader注解、RequestInterceptor全局设置、动态设置和配置文件设置,并通过具体实例演示了实现方法。

果酱 の 博客 1411

feign 调用第三方接口

且此时项目日志级别应该为debug级别.重点在configuration 由于,此次请求中为https,而我们项目是没有https证书验证的,所以要跳过,该配置类中主要做的就是打印feign请求日志,其次就是 跳过https证书验证。话不多说直接上代码,我采用的是feign ,因为本身项目就是cloud架构,就存在服务直接的feign调用,为了同一,这次第三方调用也采用feign。至此,feign调用的各种处理已经基本实现了较为清晰的日志功能,方便找错误,实现了自定以的错误返回,相对完善.

学海无涯,我用JAVA 5114

Feign实现远程接口调用

OpenFeign实现HTTP接口远程调用远程接口调用1.Maven依赖2.Feign配置类3.声明式接口调用4.接口使用5.第三方接口提供者 远程接口调用 一般在调用第三方远程接口时使用RestTemplate,这里使用Feign来进行远程接口调用。 1.Maven依赖 核心依赖是io.github.openfeign,此外可能还需引入web、fastjson等其他依赖 <dependency> <groupId>io.github.openfeign</groupId&g

Spiral_Cow的博客 1501

Feign调用第三方接口并实现负载均衡

*** @Description: 调用平台接口*//*** 平台接口预览 方法名可以随便取*/这里配置了熔断降级,如果有需要,可以在这里实现不可用地址的剔除策略。比如某个地址多次调用不成功,便可以把这个地址从配置类中删除,避免再次路由到这个地址上。值得注意的是:如果加上地址剔除策略,那么在某些地方可能就需要考虑一下并发问题。/***/@Slf4j@Component@Override// 设置调用失败时的降级处理log.error("远程调用失败!");

pig_boss的博客 1491
上一篇: Package kubectl-1.18.0-0.x86_64 already
下一篇: 解决Idea 使用maven 下载不了依赖问题
小明 go
博客等级 码龄8年 6粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值