我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方服务的时候会去下载第三方服务的SDK开发包,也就是jar包,拷贝到自己的工程中进行开发。但现如今,几乎所有的大中小企业都使用Maven进行依赖管理,第三方服务通过提供SDK包的情况越来越少,有的SDK也早已处于不再更新的状态。并且现在流行的微服务以及轻量级的RESTful通信方式,使得第三方服务主要提供API接口。

API接口,指的是通过HTTP的方式提供服务对接,也就需要对接方发起HTTP请求,解析第三方服务返回的数据;而SDK开发包,指的是对接方直接调用第三方服务提供的Java方法进行调用,不再对第三方服务发起HTTP请求。从便利性上讲,以SDK的方式对接第三方服务,的确能更加方便地进行开发对接工作。而从目前的趋势看,以RESTful通信的微服务正逐渐成为主流,服务的提供方也不再对外提供SDK开发包,因为这涉及开发量以及包的依赖问题。

我仍记得在第一家公司对接第三方API时的场景,业务要求能通过微信发起WiFi连接,这自然需要对接微信提供的API接口。那时我用了“最低级”的对接方式,也就是使用原生JDK发起HTTP请求,以及对HTTP响应的JSON数据进行解析获取我想要的数据。这其中的坑不胜其数,手写的HTTP请求客户端本身的不健壮,解析响应数据时经常抛出空指针,其中的苦恼不尽其数。

直到现在,SpringBoot为我们封装了RestTemplate,再到SpringCloud可以通过Feign让我们调用API就好像在调用接口一般顺滑。

Feign诠释了什么是面向对象,什么是一切皆为对象,我甚至认为,它可以作为面向对象编程实践的典型。

所以本文将以下4个示例讲述如何优雅地对接第三方API。

  • 原生JDK构造HTTP请求客户端,调用API
  • 在SpringBoot下使用RestTemplate,以及抽取配置的方式调用API
  • 使用OpenFeign以及抽取配置的方式调用API

准备工作

第三方API提供方,聚合数据: https://o0b.cn/anzexi

API接口详情: https://o0b.cn/anzexi

appKey(建议注册账号免费申请)

如何更优雅的对接第三方API相关推荐

  1. 如何更优雅地对接第三方API

    如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/ ...

  2. 超简单的对接第三方API的微信支付(jsapi)。

    我们从头开始: 1.首先导入依赖文件 <!--wx-pay-sdk 目前我用的版本是 3.8.0--><dependency><groupId>com.github ...

  3. 第三方API对接常见问题

    JAVA项目中通常会需要通过对接第三方API来扩展项目业务,如支付,风控,语音识别,图像处理等.但看似简单的发送/接收请求却包含了Http请求,数据加密/解密,签名加签/验签,数据处理等内容.这次通过 ...

  4. 电商平台对接第三方快递鸟物流轨迹查询api接口申请对接全流程

    电商平台对接第三方快递物流轨迹查询api接口申请对接全流程 快递鸟查询API接口是使用的物流单号即可实现查询物流信息.主要应用在电商商城.ERP系统商.WMS系统商.快递柜.银行等企业.多家快递物流公 ...

  5. 与第三方Api接口对接需要注意的点

    与第三方Api接口对接需要注意的点 目录 一.非技术对接 二.技术对接 三.必要措施 四.常见错误解决 一.非技术对接 [重要]画出流程时序图 查看对方文档,积极沟通 本公司接口文档和图发对方确认,一 ...

  6. 对接第三方顺丰丰桥下单Api接口实战教程java

    对接第三方顺丰丰桥下单接口实战 前言 pom文件顺丰依赖 Controller层 Service层 ServiceImpl实现类层 封装请求参数 顺丰丰桥下单响应参数 前言 在接入第三方顺丰Api之前 ...

  7. kubernetes认证,对接第三方认证系统,对接github认证

    kubernetes对接第三方认证 广告: 安装包地址 原文地址 概述 本文介绍如何使用github账户去关联自己kubernetes账户.达到如下效果: 使用github用户email作为kuber ...

  8. Kubernetes更优雅的监控工具Prometheus Operator

    Kubernetes更优雅的监控工具Prometheus Operator [TOC] 1. Kubernetes Operator 介绍 在 Kubernetes 的支持下,管理和伸缩 Web 应用 ...

  9. Java对接第三方支付渠道之支付宝支付

    提示:支付宝相对于微信支付更人性化,且细节做得更好. Java对接第三方支付渠道之支付宝支付 一.前期准备工作 二.导入依赖 三.书写配置类 四.书写配置文件 五.调用相关支付接口 1.流程图 2.创 ...

最新文章

  1. C++11中std::function的使用
  2. 技术界与翻译界的交锋:机器翻译离我们还有多远? | 清华AI Time
  3. 2018.12.5 区块链论文翻译
  4. 行业发展之关于有用信息和无用信息的思考
  5. 你需要知道的10个最佳javascript开发实践
  6. HDU 4035 Maze
  7. .NET 6 新特性 Parallel ForEachAsync
  8. 项目学生:分片集成测试数据
  9. 黑马程序员顺义校区php_黑马程序员:从PHP零基础到月薪11K为何送锦旗给班主任?...
  10. web.config中的InProc模式 与 StateServer模式[转]
  11. JavaScript 原型对象和原型链
  12. Facebook广告系统及多账号操作经验分享
  13. ❤️今天,该让 python 上个热门❤️
  14. linux使用samba实现文件共享
  15. Tippy.js - 免费开源且高度可定制的气泡提示独立组件
  16. 贝塞尔曲线及实践案例
  17. mysql5.5升级到8_MySQL5.7升级到8.0过程详解
  18. 二进制转十进制 八进制 十六进制
  19. c语言 原子操作,原子操作
  20. 关于MCU M4内核移植FreeRTOS的笔记

热门文章

  1. 菜鸟到大神的上位历程,即学即用走向人生巅峰
  2. word 表格不跨行断页
  3. OllyDbg 常用快捷键与命令
  4. 成长笔记4:教育是什么
  5. 通俗解释机器学习中的召回率、精确率、准确率
  6. 方形图片转为圆形图片
  7. 【Linux】Linux 开放端口
  8. 【neutron源码分析】neutron-server启动流程分析
  9. 【机器学习必备知识】NumPy线性代数详解
  10. parsec-3.0 安装报错(__mbstate_t)