ruby-on-rails – 在库中包装第三方服务的最佳实践
发布时间:2020-12-17 03:27:24 所属栏目:百科 来源:网络整理
导读:我有兴趣为我正在使用的第三方API编写库,我需要一些建议.在一次请求中,库的平均使用将涉及几个api调用.例如,一个api呼叫从第三方服务中抓取用户,然后另一个呼叫使用该用户抓取他/她的照片.每个API调用都将获得自己的库方法包装器以及处理错误/超时的额外逻辑
我有兴趣为我正在使用的第三方API编写库,我需要一些建议.在一次请求中,库的平均使用将涉及几个api调用.例如,一个api呼叫从第三方服务中抓取用户,然后另一个呼叫使用该用户抓取他/她的照片.每个API调用都将获得自己的库方法包装器以及处理错误/超时的额外逻辑,但我最大的问题是库是应该作为包含状态的单例还是作为一系列类方法.
例如: user_id = ThirdParty.get_user("abc@gmail.com") photos = ThirdParty.get_photos(user_id) 要么 thirdpartyservice = ThirdPartyService.new("abc@gmail.com") photos = thirdpartyservice.get_photos 这些不一定是图书馆的确切设计,但我对每种方法的优缺点感到困惑.任何帮助都会很棒! 顺便说一句,我用的是ruby! 解决方法
我会让库包含状态,因为这会降低用户端代码的复杂性(这就是API应该做的事情,增加简单性).使用这种方法,用户不必跟踪该user_id,因为库保持状态.
如果用户真的想要他们的user_id(或库存储的任何其他数据),您可以在库中创建一个attr_reader来公开该数据. 要为get_photos方法添加fleixiblity,您可以执行以下操作: class ThirdPartyService def get_photos(user_id=@id_stored_in_library) # do work end end 这种方式默认为存储的id,但是它增加了灵活性,用户可以选择指定用户ID. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – first_or_create通过电子邮件然后保存嵌套
- C语言Windows程序设计 (一) 用什么软件好?
- c – 如何枚举所有可用的网络接口?
- c# – 如何获取右键单击鼠标事件?将EventArgs更改为MouseE
- PostgreSQL password security
- 【React】配置react-hot-loader后出现import' and '
- 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制
- flex4 Tree默认打开指定项并选中指定节点
- c# – 使用backgroundworker的多个长方法的最佳实践
- xcode – 删除对App Store上Apple Watch的支持