cnpm / cnpmcore

Private NPM Registry for Enterprise
https://npmmirror.com
MIT License
622 stars 84 forks source link

是否有 API 支持查询 package 全部/指定时期内的版本号列表 #648

Closed plainheart closed 8 months ago

plainheart commented 9 months ago

有一些场景可能需要获取全部或指定时间范围内的版本号列表,以便切换选择。当前可以通过 https://registry.npmmirror.com/:pkgname 的方式获取一个包的注册表信息,从而提取到 versions 和 tags,但其返回数据体包含众多其他信息,如果一个包的版本很多,响应体将非常大,这可能多耗费不必要的流量和下载时间。 故而想问一下是否有可能提供类似 https://data.jsdelivr.com/v1/package/npm/echarts 这样的专用 API 并能够支持按时间范围查询,谢谢。

类似现有 downloads API - https://registry.npmmirror.com/downloads/range/2024-01-28:2024-02-04/echarts

增加一个 versions API - https://registry.npmmirror.com/versions/echarts - 全部 - https://registry.npmmirror.com/versions/range/2024-01-28:2024-02-04/echarts - 指定时间范围

返回值包含版本号及发布时间。

github-actions[bot] commented 9 months ago

我们已经看到你的反馈,如果是功能缺陷,可以提供一下重现该问题的方式;如果是新功能需求,我们会尽快加入讨论。同时我们非常期待你可以加入我们的贡献者行列,让项目可以长期可持续发展。

hezhengxu2018 commented 9 months ago

应该是指 #134 ?

Beace commented 9 months ago

可以改下搜索接口,加些参数返回一些特定字段

https://github.com/cnpm/cnpmcore/blob/master/app/port/controller/package/SearchPackageController.ts#L31

plainheart commented 9 months ago

应该是指 #134 ?

好像未看到 #134 实现了公开接口允许仅查询版本号列表。不过根据 npm 官方 registry API 来看,可以在 package registry API 请求时传入一个 Accept: application/vnd.npm.install-v1+json 请求头,即可返回包含较少冗余内容的结果,这个还是能减少蛮多额外流量开销的(虽然相比此 PR 的提议还是多了点.... 😅

可以改下搜索接口,加些参数返回一些特定字段

搜索接口感觉条件限制好的话好像也不错,返回内容也蛮精简的,看起来比上面加 header 后的 registry API 还少些~