如何封装 HTTP 接口, 供 Java 程序方面的使用? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
asanelder
V2EX    程序员

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

  •  
  •   asanelder 2021-06-17 17:05:09 +08:00 3713 次点击
    这是一个创建于 1578 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在俺有一个第三方服务, 提供的是 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 请求框架,不过我拿到后端服务用了
    itechify
        2
    itechify  
    PRO
       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);
    Dockerfile
        4
    Dockerfile  
       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
    @shenanAZ #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     Solana     2762 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 12:32 PVG 20:32 LAX 05:32 JFK 08:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86