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

调用别人写好的 api 有什么最佳实践吗?

  •  
  •   noble4cc · 2020-04-05 11:40:13 +08:00 · 3355 次点击
    这是一个创建于 1692 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不限语言,有什么比较通用的准则

    12 条回复    2020-10-19 11:32:48 +08:00
    FanError
        1
    FanError  
       2020-04-05 11:42:09 +08:00
    0.0 http 请求 utf8 编码 json 返回算不算 0.0
    cominghome
        2
    cominghome  
       2020-04-05 12:02:06 +08:00
    你又不是服务提供方你能整出啥最佳实践啊,没有话语权啊兄 dei
    forgottencoast
        3
    forgottencoast  
       2020-04-05 12:05:08 +08:00
    几乎所有的程序员写代码都是调用别人写好的 api 。
    一般被调用的框架都会写一些示例代码,做的好的还会有“最佳实践”这样的指导文档呢,其目的是指导其他人怎么样写的看起来跟他们几乎一样。
    inwar
        4
    inwar  
       2020-04-05 12:13:32 +08:00 via Android
    按照自己业务逻辑抽象包一层再到业务层
    useben
        5
    useben  
       2020-04-05 12:24:02 +08:00
    别问,问就是最佳做法是在自己 service 层包装一下再用
    hantsy
        6
    hantsy  
       2020-04-05 12:30:48 +08:00
    先包装一层比较 XXXAPIClient,所有的异常状态最好用 Exception 重新封装,这样再写自己的逻辑调用这个 API,完全不用关心它是本地还是远程的,做到完全隔离。
    airyland
        7
    airyland  
       2020-04-05 13:03:04 +08:00
    1.注意逻辑,不要写死循环。
    2.注意异常,默认第三方都是不可靠的。
    niubee1
        8
    niubee1  
       2020-04-05 14:39:17 +08:00
    做好容错,要考虑
    1. 业务错误
    2. 网络错误
    网络错误主要是考虑超时,大量的 timeout 会波及到现有业务。所以需要针对接口有熔断设计,当外部 API 挂掉的时候,要么有备份(额外的替代接口),或者要有服务降级(用 dummy system 直接返回接口无法访问)
    arloor
        9
    arloor  
       2020-04-05 23:40:03 +08:00
    降级( default 实现)
    和 try catch Exception
    xuanwu
        10
    xuanwu  
       2020-04-06 10:50:14 +08:00
    原本英文命名比较冗长或者难记时,封装成中文的再用
    大疆的 python api 中文化演示: https://zhuanlan.zhihu.com/p/90607858
    草蟒正在做更多的常用模块汉化
    yjxjn
        11
    yjxjn  
       2020-04-10 11:07:20 +08:00
    写 IO 操作呗。。。。也是别人写好的 API
    lihuayang
        12
    lihuayang  
       2020-10-19 11:32:48 +08:00
    刚写了一篇文章关于这个的,有需要的话可以看下: https://juejin.im/post/6884945023905988622
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:02 · PVG 06:02 · LAX 14:02 · JFK 17:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.