如何封装 HTTP 接口, 供 Java 程序方面的使用?

2021-06-17 17:05:09 +08:00
asanelder  asanelder
现在俺有一个第三方服务, 提供的是 HTTP 接口. 俺自己的服务是 Java 写的.
如果直接使用 HTTP 相关库来调用吧, 好像好啰嗦, 好麻烦. 要是调用 HTTP 接口, 就是调用原生接口那样就好了.
俺想封装一下, 有什么什么好的工具呢?

俺听说过 feign, 这玩意能做这事不?
3357 次点击
所在节点   程序员  程序员
17 条回复
Veneris
Veneris
2021-06-17 17:20:36 +08:00
retrofit,一个 Android 上的 http 请求框架,不过我拿到后端服务用了
oneisall8955
oneisall8955
2021-06-17 17:23:55 +08:00
最终也是调 http 的库
shenlanAZ
shenlanAZ
2021-06-17 17:25:48 +08:00
Hutool

HttpUtil.get(url); / HttpUtil.post(url, paramMap);
Jwyt
Jwyt
2021-06-17 17:25:49 +08:00
。。这太多了

github.com/hsiafan/requests
我喜欢这个
micean
micean
2021-06-17 17:27:52 +08:00
自己写个动态代理也就分分钟的事。。。。
codehelen
codehelen
2021-06-17 18:58:24 +08:00
hutool
stardust21
stardust21
2021-06-17 22:49:55 +08:00
@Veneris 这个确实很方便
MakeItGreat
MakeItGreat
2021-06-17 23:02:24 +08:00
你真的像编程随想………………
真的像……
clickhouse
clickhouse
2021-06-17 23:29:40 +08:00
feign 可以,底层也支持多种 http client
crclz
crclz
2021-06-18 00:07:17 +08:00
自己封装一个类。这其实是关注点分离 + 分层。

jdbc 或者 jpa 是怎么封装的、怎么处理的网络连接异常、怎么处理的对方返回的错误代码,你就怎样封装,最后可以得到和 jdbc 、jpa 一样简洁的编程体验。
BBCCBB
BBCCBB
2021-06-18 00:17:01 +08:00
feign 和 retrofit2 差不多, 使用上比 retrofit2 还方便.. 不用返回 Call 对象.

吸收了 retrofit2 的优点, 改进了缺点, 比如 retrofit2 只支持 okhttp..


用 feign 就好了. 简单好用
dayeye2006199
dayeye2006199
2021-06-18 04:28:09 +08:00
要是调用 HTTP 接口, 就是调用原生接口那样就好了

你说的可能是 RPC
yitingbai
yitingbai
2021-06-18 08:54:20 +08:00
@MakeItGreat 编程随想不会问这么简单的问题
asanelder
asanelder
2021-06-18 09:16:38 +08:00
@Veneris #1
@shenlanAZ #3
@Jwyt #4
@micean #5
@codehelen #6
@clickhouse #9
@crclz #10
@BBCCBB #11

感谢几个老铁提供的思路, 俺试试


@yitingbai #13 哈哈, 铁子给出了让人无法质疑的理由
warcraft1236
warcraft1236
2021-06-18 11:11:37 +08:00
rpc 了解一下?
leonard916
2021-06-18 13:08:43 +08:00
我封装了一个原生的 HTTP 工具(还有别的 见: https://srl.cx/scomu )用起来就还好 如果你觉得麻烦就再套一层(框架不能提供太复杂的组合,会超啰嗦)。
Yiso1573
2021-06-18 23:22:39 +08:00
伙计我上家公司就是做接口对接的,简单的你就直接找个 http 调用的工具类就行了比如前面提的 hutool 的工具类(它有很多好用的工具类,比如时间、缓存、反射),你也可以自己写。其实主要还是需要你根据接口去做封装和设计,我一般把接口调用的和实际业务的是拆分开的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX