[Bug]: 应用最新版本API的接口文档与其代码行为不一致
Closed this issue · 2 comments
部署方式 | How to Deploy
Docker (Default)
部署版本 | Version
5.1.0
Git 哈希值 (长度 40)| Git Ref (40 length)
反代服务 | Reverse Proxy
nginx
HTTPS 证书类型 | HTTPS(SSL)
可受信任的证书 Verified SSL
已阅读文档 | Read the document
- 已阅读 | Yes
描述 | Description
应用最新版本API接口 的文档地址:
https://zealot.ews.im/zh-Hans/docs/developer-guide/api/apps#%E5%BA%94%E7%94%A8%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC
应用最新版本API接口 的实现代码:
zealot/app/controllers/api/apps/latest_controller.rb
Lines 1 to 16 in b7bba5b
根据文档要求给出参数:channel_key,release_version,build_version,无法获取期望的结果(releases字段为空数组)
请求:
https://tryzealot.ews.im/api/apps/latest?channel_key=450efee74e19e357137094790fbcdee8&release_version=0&build_version=0
响应:
{
"app_name": "测试2 Production Android",
"bundle_id": "*",
"git_url": null,
"app": {
"id": 413,
"name": "测试2"
},
"scheme": {
"id": 775,
"name": "Production"
},
"releases": []
}
根据代码要求给出参数:channel_key,bundle_id,release_version,build_version,可以获取期望的结果
请求:
https://tryzealot.ews.im/api/apps/latest?channel_key=450efee74e19e357137094790fbcdee8&release_version=0&build_version=0&bundle_id=com.example.myapplication
响应:
{
"app_name": "测试2 Production Android",
"bundle_id": "*",
"git_url": null,
"app": {
"id": 413,
"name": "测试2"
},
"scheme": {
"id": 775,
"name": "Production"
},
"releases": [
{
"version": 1,
"app_name": "测试2 Production Android",
"bundle_id": "com.example.myapplication",
"release_version": "1.2.3",
"build_version": "123",
"source": "web",
"branch": "",
"git_commit": "",
"ci_url": "",
"size": 4567453,
"platform": "Android",
"device_type": "phone",
"icon_url": "https://tryzealot.ews.im/uploads/apps/a413/r4023/icons/sK.png",
"install_url": "https://tryzealot.ews.im/download/releases/4023",
"changelog": [],
"text_changelog": "",
"custom_fields": [],
"created_at": "2024-03-15T18:41:30.799+08:00"
}
]
}
但是获取的结果 releases字段是一个数组,而文档中releases字段是一个对象而不是数组,与文档示例不一样.
文档中响应示例
{
"app_name": "Zealot iOS 测试版",
"bundle_id": "*",
"git_url": null,
"app": {
"id": 3,
"name": "Zealot"
},
"scheme": {
"id": 5,
"name": "测试版"
},
"releases": {
"version": 1,
"app_name": "Zealot iOS 测试版",
"bundle_id": "im.ews.zealot",
"release_version": "1.0.0",
"build_version": "10291524",
"source": "Web",
"branch": "",
"git_commit": "",
"ci_url": "",
"size": 79712596,
"icon_url": "https://tryzealot.ews.im/uploads/apps/a3/r21/icons/8ab13dc08321f9f3412a9fa98689d9c3.png",
"install_url": "itms-services://?action=download-manifest&url=https://tryzealot.ews.im/api/apps/O1qHk/1/install",
"changelog": [],
"created_at": "2019-12-25T14:26:06.608+08:00"
}
}
我觉得API既然是/api/apps/latest
,其中latest
意味着最新的
,是最高级(superlative degree)表示在一组中具有最高程度的特征,应该只返回最新的一个版本即可,不用返回多个版本
问题日志 | Relevant log output
No response
我对于这个的定义是,接口允许传递版本参数,可以获取请求版本至最新版本中的所有版本。所以 latest
表示一个最新版本的集合。这点跟国外 latest news, latest articles 是一样的,它是当前时间倒序的最新新闻和文字列表,而不是单一个体。
如果你需要获取最新的版本,只需要获取数组中第一个即可。所以 latest 在对你和对我来说标准不一样。
非常感谢您的详细解答!您的回复帮助了我解决了疑惑。如果我有任何其他问题,我会再次联系您。再次感谢您的耐心和帮助!