V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
asanelder
V2EX  ›  程序员

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

  •  
  •   asanelder · 2021-06-17 17:05:09 +08:00 · 2994 次点击
    这是一个创建于 1015 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在俺有一个第三方服务, 提供的是 HTTP 接口. 俺自己的服务是 Java 写的.
    如果直接使用 HTTP 相关库来调用吧, 好像好啰嗦, 好麻烦. 要是调用 HTTP 接口, 就是调用原生接口那样就好了.
    俺想封装一下, 有什么什么好的工具呢?

    俺听说过 feign, 这玩意能做这事不?
    17 条回复    2021-06-18 23:22:39 +08:00
    Veneris
        1
    Veneris  
       2021-06-17 17:20:36 +08:00
    retrofit,一个 Android 上的 http 请求框架,不过我拿到后端服务用了
    oneisall8955
        2
    oneisall8955  
       2021-06-17 17:23:55 +08:00
    最终也是调 http 的库
    shenlanAZ
        3
    shenlanAZ  
       2021-06-17 17:25:48 +08:00
    Hutool

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

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

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

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


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

    你说的可能是 RPC
    yitingbai
        13
    yitingbai  
       2021-06-18 08:54:20 +08:00   ❤️ 1
    @MakeItGreat 编程随想不会问这么简单的问题
    asanelder
        14
    asanelder  
    OP
       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
        15
    warcraft1236  
       2021-06-18 11:11:37 +08:00
    rpc 了解一下?
    leonard916
        16
    leonard916  
       2021-06-18 13:08:43 +08:00
    我封装了一个原生的 HTTP 工具(还有别的 见: https://srl.cx/scomu )用起来就还好 如果你觉得麻烦就再套一层(框架不能提供太复杂的组合,会超啰嗦)。
    Yiso1573
        17
    Yiso1573  
       2021-06-18 23:22:39 +08:00
    伙计我上家公司就是做接口对接的,简单的你就直接找个 http 调用的工具类就行了比如前面提的 hutool 的工具类(它有很多好用的工具类,比如时间、缓存、反射),你也可以自己写。其实主要还是需要你根据接口去做封装和设计,我一般把接口调用的和实际业务的是拆分开的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1134 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:43 · PVG 02:43 · LAX 11:43 · JFK 14:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.