Qt汽车套件部署服务器API参考

API参考

以下表格描述了请求、其参数以及相应的响应。

hello

检查您是否使用正确的平台和正确使用API与部署服务器通信。

参数描述
platform客户端运行的平台。此参数设置了您获得的软件包的架构。有关更多信息,请参阅《appstore/settings.py》文件中的settings.APPSTORE_PLATFORM参数。
version您与服务器通信时使用的部署服务器HTTP API版本。有关更多信息,请参阅《appstore/settings.py》文件中的settings.APPSTORE_VERSION
require_tag(也可作为 tag传递)一个可选参数,用于通过标签过滤包。接收以逗号分隔的标签列表;这些标签必须是数字字母。仅列出符合指定的任意一个标签的应用程序(且不在其冲突列表中的应用程序)。
architecture一个可选参数,用于通过架构过滤包。接收CPU架构。如果没有指定架构,则只列出显示所有架构的包。

返回一个包含以下字段和值的JSON对象。

JSON字段描述
statusok成功
maintenance服务器正在维护模式且当前不可用。
incompatible-platform您使用的平台不兼容。
incompatible-version您使用的API版本不兼容。
incompatible-architecture架构参数格式不正确,或服务器无法解析它。
malformed-tag标签格式不正确,可能不是数字字母,或无法解析。

login

使用提供的用户名和密码登录到部署服务器。必须提供IMEI或唯一的硬件标识符,例如MAC地址。此调用是下载应用程序所必需的。

参数描述
username用户名。
password指定用户名的密码。

返回一个包含以下字段和值的JSON对象。

JSON字段描述
statusok登录成功。
missing-credentials未提供用户名或密码。
account-disabled在管理面板中已禁用帐户。
authentication-failed用户名和/或密码可能不正确;或发生其他身份验证错误。

logout

从部署服务器登出当前登录用户。

返回一个包含以下字段和值的JSON对象。

JSON字段描述
statusok用户已成功登出。
失败用户未登录。

app/list

列出所有应用。可以通过使用 category_idfilter 参数对返回的列表进行筛选。

参数描述
category_id仅限制具有此类别ID的应用。
filter仅列出名称匹配此筛选条件的应用。

返回一个JSON对象数组的数组(不是一个对象本身!)。

JSON字段描述
id一个唯一的app ID,采用反向域名表示法。
name应用名称。
vendor应用的供应商名称;不是供应商ID。
category应用类别名称。
tags需要应用的标签的JSON数组。
conflict_tags与应用冲突的标签的JSON数组。
version应用的版本,作为字符串返回。如果没有版本号,则返回默认版本“0.0.0”。
architecture应用的架构,作为在应用的库组件中检测到的返回。

如果应用不是本地应用,则包含所有。否则,它形成如下:mips-little_endian-32-elf

这里是一个组合

  1. CPU架构,由QsysInfo::buildCpuArchitecture()返回
  2. CPU字节序,little_endianbig_endian
  3. ABI位数
  4. 二进制格式,elfmach_ope32
briefDescription描述应用的简短文本,限于1行,约80-130个字符。
category_idNumeric category ID that matches the app's category.
purchaseId购买识别符,服务器上特定应用的自由形式标识符。用作 app/purchase API调用中ID的替代。这是一个自由形式的字符串,目前是一个UUID,但不应对此格式做出假设。
iconUrl此应用程序图标的URL

app/icon

为给定应用程序ID返回一个图标。

参数描述
id应用ID。
architecture一个可选参数,用于通过架构过滤图标。覆盖会话中指定的架构。接收CPU架构。如果没有在会话或此参数中指定架构,则只列出显示所有架构的图标。

如果应用存在,返回一个PNG图像;否则返回HTTP 404错误。

app/description

为给定的app ID返回一个描述。

参数描述
idapp ID

返回应用的描述文本,可以是HTML或纯文本。

app/purchase

返回一个仅供特定时间段内使用的下载请求应用的URL;可由设置进行配置。

注意:这是一个遗留的AppStore请求。更改此API的名称将需要在Neptune 3 UI中进行更改。

参数描述
device_id客户端硬件的唯一设备ID;目前未使用。
id应用ID。
purchaseId替代应用ID,用于选择具有标签和所有内容的特定应用(参见app/list API描述)。如果指定了ID和purchaseId,则ID优先。

返回一个JSON对象

JSON字段描述
statusok成功
失败发生错误,请检查错误字段以获取更多信息。
error文本。如果状态等于failed,包含错误描述。
url一个URL。从下载应用的URL。根据expiresIn指定的值到期。
expiresIn一个整数值。下载URL有效的秒数。

category/list

列出所有可用的类别。同时也返回 全部 元类别,用于保存所有可用的应用程序。

返回一个JSON对象数组的数组(不是一个对象本身!)。

JSON 字段描述
id唯一的类别 ID。
name类别名称。

category/icon

为给定的类别 ID 返回一个图标。

参数描述
id类别 ID。

返回 PNG 格式的图像或空白的 1x1 PNG 文件。

注意:当前采用该类别中第一个应用的图标(如果存在)。

upload

接受远程包上传请求。用户必须属于 工作人员 群组才能使用此 API。这也需要基本的身份验证或对 login 方法的先前调用。这是一个通过使用的参数进行 POST 请求的服务器。

参数描述
description包描述,长版本。可以是文本或 HTML。
short-description单行包描述。
category包放入的类别的类别名称。
vendor包的供应商名称。
package包本身。这是一个作为文件参数上传的文件。

返回 JSON 对象

参数描述
statusok成功
无描述缺失描述参数。
无简短描述缺失简短描述参数。
无分类缺失分类参数。
无供应商缺失供应商参数。
包验证失败包未通过格式或合理性验证。
不存在的分类指定的分类与传递的参数不匹配。
不存在的供应商指定的供应商与传递的参数不匹配。
无包可上传请求中没有 package 参数,或者它不是一个 POST 请求。

API 使用示例

部署服务器公开了一个 HTTP API。这些请求的参数需要使用 HTTP GET 或 POST 语法提供。数据以 JSON、PNG 或文本格式返回,具体取决于请求。

工作流程

  1. 向服务器发送 hello 请求以获取当前状态和检查您的平台是否与该服务器实例兼容

    http://<server>/hello?platform=AM&version=1

    返回

    { "status": "ok" }

  2. 以密码 pass 登录为 user

    http://<server>/login?username=user&password=pass

    返回

    { "status": "ok" }

  3. 列出所有应用程序

    http://<server>/app/list

    返回

    [{ "category": "Entertainment", "name": "Nice App", "vendor": "Luxoft", "briefDescription": "Nice App is a really nice app.", "category_id": 4, "id": "com.luxoft.niceapp"}, .... ]

  4. 请求下载应用程序

    http://<server>/app/purchase?device_id=12345&id=com.luxoft.niceapp

    返回

    { "status": "ok", "url": "http://<server>/app/download/com.luxoft.niceapp.2.npkg", "expiresIn": 600 }

  5. 在步骤 4 中提供的 url 内部 expiresIn 秒内下载应用程序。

©2020 The Qt Company Ltd. 本文档中包含的文档贡献者是它们各自的版权所有者。本文件中的文档是根据自由软件基金会发布的 GNU Free Documentation License 第 1.3 版 的条款许可的。Qt 和相应的标志是在芬兰和/或世界其他国家/地区的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者的财产。