原生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 阅读详情

相关推荐

FPGA中的CMAC硬核与Interlaken硬核

CMAC硬核和Interlaken硬核是FPGA中两种重要的内置功能模块,它们分别在CNN推理和高带宽芯片到芯片接口方面发挥着关键作用。FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)中的CMAC硬核与Interlaken硬核是两种重要的内置功能模块,它们在FPGA设计中扮演着关键角色。需要注意的是,FPGA设计中的硬核选择不仅取决于硬核本身的性能,还需要考虑硬核与FPGA芯片其他部分的兼容性、功耗、成本等因素。Interlaken硬核。

weixin_41230430的博客 1481

Golang 面向对象编程

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

Seekload 270

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9918

SpringCloud使用Feign调用第三方接口

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

huangdesenCN的博客 8258

树莓派驱动DLPDLCR230NPEVM+framebuffer显示图片

DLPDLCR230NPEVM DLP® LightCrafter™ Display 230NP 是一个易于使用的紧凑型即插即用评估平台,适用于消费类产品、工业、医疗和物联网 (IoT) 市场中的各种超便携显示应用。此评估模块 (EVM) 采用 DLP230NP 芯片组,该芯片组由DLP230NP.23 1080p DMD、DLPC3436显示控制器和DLPA2005PMIC/LED 驱动器组成。此 EVM 外形小巧,配备生产就绪型光学引擎以及支持 18 位 RGB 并行视频接口...

L_Y000的博客 2618

告别手动改图!用Python+PyWin32驱动SolidWorks,实现参数自动化修改(保姆级避坑指南)

本文详细介绍了如何利用Python和PyWin32驱动SolidWorks实现参数自动化修改,提供从环境配置到API连接的工业级解决方案。通过实战案例和避坑指南,帮助工程师高效搭建自动化脚本工作流,显著提升设计效率。

weixin_30614109的博客 743

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

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

GSON的博客 370

【GameFramework框架】二、GameFramework框架介绍

Game Framework框架是由E大(Ellan Jiang)开源的一款基于Unity的通用游戏框架。Game Framework框架提供了游戏开发中常用的框架基础模块,将基础模型进行了封装,在资源管理和资源更新方面比较完善,可以大大加大开发进程,加快开发速度,并且还在在此此处上保证产品质量。实在是代码开发、框架学习、编程进阶、居家旅行哦不对,是提升自己的最佳实践。Game Framework框架。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 5849

Feign调用第三方http接口

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

远方的少年 9817

【雕爷学编程】MicroPython手册之 Teensy 4.1 实时时钟 (RTC)

在类的初始化函数中,定义了用于控制I2C总线的i2c对象和RTC模块的I2C地址。接着,使用该引脚初始化了一个Pin对象。它还提供了8个串口,3个SPI端口,3个I2C端口,2个I2S/TDM数字音频端口,3个CAN总线(其中一个支持CAN FD),以及一个SDIO(4位数据)原生SD卡端口12。2、内存:Teensy 4.1配备了1024 KB的RAM(其中512 KB是紧密耦合的),8 MB的Flash(其中64 KB用于恢复和EEPROM模拟),以及两个位置可以选择添加更多的QSPI内存芯片。

雕爷学编程 575

如何将 Fiori Elements Object Page Header 工具栏里按钮用 JavaScript 代码设置成禁用状态

本文介绍了如何在SAP Fiori Elements应用中动态控制Object Page工具栏按钮的可用状态。通过UI5 Inspector工具分析发现,这些按钮的enabled属性都双向绑定到/ui/enabled模型字段。在StatusExt.controller.js中,通过获取按钮ID前缀拼接完整控件ID,使用setEnabled(false)方法即可禁用按钮。关键点包括:1)使用extensionAPI获取视图ID前缀;2)注意事件回调中的this上下文绑定;3)通过修改模型字段可同步更新所有绑定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 375

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

怀念二抱三抱

文天大人 154

搞定ESD(九):静电放电之PCB设计

不同信号参考地平面应尽量保持完整,减小静电电流流过参考地平面时造成的电位差,防止电位差导致的信号传输电平错误.主芯片GPIO信号布线应保持最短化,减小与参考地平面之间的电场耦合,同时也防止因信号环路面积较大耦合静电放电噪声干扰。外部端子接地引脚顶层采用分地设计,最好是直接过孔到完整参考地平面接地,避免与顶层信号包地、其它包地相连,防止顶层串扰耦合到其它信号,造成ESD问题。

记得诚 1951

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

Get请求。

程序员高级码农的博客 401

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

独立行走的小黄 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

Carson073的博客 4910

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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的博客 1492
上一篇: 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、付费专栏及课程。

余额充值