【问题标题】:How to manage different API versions in a Perl module? [closed]如何在 Perl 模块中管理不同的 API 版本? [关闭]
【发布时间】:2018-01-14 04:03:18
【问题描述】:

有一个DataTables CPAN module。它适用于数据表 1.6 版。 同时,有数据表 1.10,具有不同的界面。很多东西都变了,例如选项名称。

我想知道:如何扩展模块以涵盖旧的东西以及新的数据表 1.10 接口? 这个问题有通用名称吗? 有最佳实践吗? 是否有一个很好的参考模块我可以看看?我认为其他人也确实面临过挑战。

【问题讨论】:

  • 另见JQuery::DataTables::Request: "本模块只提供了对应v1.10参数的API,但是将v1.9参数映射到对应的v1.10参数。"
  • 这两个模块的界面完全不同。 DataTables 假定 CGI 并自己进行所有解析,而 JQuery::DataTables::Request 实际上希望您传入 args。我认为后者是更好、更抽象的实现。你应该能够使用它。同时,向它们(github.com/srchulo/DataTablesgithub.com/xmikew/p5-JQuery-DataTables-Request)发出拉取请求以相互添加链接可能是有意义的,因此未来的用户会看到这两个 API 版本都有实现。

标签: perl api module datatables cpan


【解决方案1】:

从我自己的作者的角度来看,最佳实践是

  1. 使用最新的 API 保持最新的 master。
  2. 将模块的次要版本与 API 的主要版本保持一致。
  3. 推荐模块用户

    3.1。与模块一起升级 API,或

    3.2。保持其模块次要版本不受版本要求的影响(我使用 cpanfile 或 cartonfile)。

您需要更具体的答案吗?

【讨论】:

  • 很高兴获得有关该主题的一些反馈。但是,我对如何实际操作很感兴趣,以允许使用不同的 API 版本。您的提议意味着每个模块仅支持 1 个 api 版本。
  • 每个模块次要版本一个 API 版本是可以的,因为您可以控制双方。模块用户允许安装所需的 API Server,并安装/需要 API 对应的最新补丁版本的 API Client。在一个模块中支持多个 API 版本是当模块用户不拥有 API 服务器端时应该完成的另一项任务。
  • 我想我理解你的答案,但这不是我想要的。我不是 js DataTables 库的所有者。此外,我认为必须安装特定的过时(不是最新)版本的模块以获得标准行为退出的方法并不常见。我个人认为这对普通最终用户来说是不可接受的。
猜你喜欢
  • 2013-12-22
  • 2020-06-21
  • 2014-04-05
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多