Plexus REST API 完整参考:从查询应用到删除评分的所有端点一览
2026/8/24 17:00:21 网站建设 项目流程

Plexus REST API 完整参考:从查询应用到删除评分的所有端点一览

【免费下载链接】plexusRemove the fear of Android app compatibility on de-Googled devices.项目地址: https://gitcode.com/gh_mirrors/ple/plexus

Plexus 是一个去 Google(de-Googled)Android 设备上的应用兼容性众包项目,它通过一套开放、简洁的 REST API,让你能查询 App 在原生或 microG 环境下的评分、提交新评分,并用删除令牌安全地撤销自己的评分。本文完整梳理 v1 版本全部端点:认证方式、查询参数、请求字段与响应结构,帮你快速上手集成。

先看懂 Plexus 数据模型 📊

在调 API 之前,先理解两个核心概念:

  • App(应用):以 Android 包名(如org.thoughtcrime.securesms)作为唯一标识,包含名称、图标等信息。定义见 lib/plexus/schemas/app.ex
  • Rating(评分):某设备用户在特定 ROM 环境下对一个 App 的兼容性打分,score取值 1~4,rating_type分为native(原生)和micro_g(microG 环境)。定义见 lib/plexus/schemas/rating.ex

每个应用的平均分以numerator / denominator(如 3.86 / 4)加total_count(评分人数)的形式返回,方便你按置信度展示数据。

全部端点速查表

所有端点路由定义在 lib/plexus_web/router.ex,前缀统一为/api/v1

方法端点说明需要认证
POST/devices/register注册设备,邮箱接收验证码
POST/devices/verify验证码换 Token
POST/devices/renew刷新 Token
GET/apps查询应用列表(支持搜索/分页)
GET/apps/:package查询单个应用
POST/apps创建新应用
GET/apps/:package/ratings查询评分列表
GET/apps/:package/ratings/:id查询单条评分
POST/apps/:package/ratings提交评分
DELETE/apps/:package/ratings/:id删除评分

另有两个辅助入口:/api/openapi返回 OpenAPI 规范文档,/swaggerui提供交互式调试界面(见 lib/plexus_web/router.ex)。

设备认证三步走:注册、验证、刷新

写入类端点(创建应用、提交/删除评分)都需要 Bearer Token,认证由 lib/plexus_web/api_auth_plug.ex 统一拦截,缺失或失效的 Token 会返回401

第 1 步:注册设备

curl -X POST /api/v1/devices/register \ -H "Content-Type: application/json" \ -d '{"device_id": "你的设备ID", "email": "you@example.com"}'

服务器会向邮箱发送一封含验证码的邮件(实现见 lib/plexus_web/controllers/api/v1/device_controller.ex)。

第 2 步:验证并获取 Token

curl -X POST /api/v1/devices/verify \ -d '{"device_id": "你的设备ID", "code": "邮箱中的验证码"}'

验证成功后返回 Token,之后所有写请求都带上:

Authorization: Bearer <你的Token>

第 3 步:刷新 Token

调用POST /devices/renew并使用当前 Token 认证,即可换发新 Token,避免设备长期断线后无法提交数据。

GET /apps:按关键词搜索应用列表

最常用的查询端点,支持 5 个查询参数:

  • q:搜索关键词,如?q=Signal
  • page/limit:分页,默认每页 25 条
  • scores=true:附带各类型平均分
  • last_updated:RFC 3339 时间戳,只取该时间之后更新过的应用(做增量同步的最佳参数)

示例:

curl "/api/v1/apps?q=Signal&limit=5&last_updated=2026-08-16T00:00:00Z"

响应结构为{data, meta}metapage_numberlimittotal_counttotal_pages(见 lib/plexus_web/controllers/api/v1/schemas/apps_response.ex),分页信息齐全,翻页只需递增page

参数解析逻辑集中在build_opts/1函数(lib/plexus_web/controllers/api/v1/app_controller.ex),非法的page/limit会被静默忽略,不会报错。

GET /apps/:package:查询单个应用详情

路径中的:package即 Android 包名:

curl /api/v1/apps/org.thoughtcrime.securesms?scores=true

返回该应用的名称、图标、更新时间,scores下按nativemicro_g分别给出平均分与投票数——这是做"App 兼容性展示页"最直接的接口。

POST /apps:注册一个全新应用

设备在本地发现一个数据库里还不存在的应用时,先调此端点建档:

curl -X POST /api/v1/apps \ -H "Authorization: Bearer <Token>" \ -d '{"app": {"package": "com.example.newapp", "name": "New App", "icon_url": "https://..."}}'

必填packagenameicon_url可选。成功后返回201,并附带指向新应用资源的location头。

POST /apps/:package/ratings:提交一条评分

这是 Plexus 众包数据的入口,请求体字段如下:

字段类型必填说明
android_versionstring安卓版本
app_packagestring由路径注入,无需重复填写
app_build_numberinteger应用构建号
rom_namestringROM 名称(如 GrapheneOS)
rom_buildstringROM 构建号
installation_sourcestring安装来源(如 google_play_alternative)
rating_typeenumnativemicro_g
scoreinteger1~4 的兼容性评分
app_versionstring应用版本号
notesstring备注(功能受限说明等)

关键安全机制:响应除评分数据外,还会返回一个一次性delete_token(由 lib/plexus/delete_token.ex 生成,32 字节随机数),数据库只存其 SHA-256 哈希。请妥善保存它——这是日后删除该评分的唯一凭证。

DELETE /apps/:package/ratings/:id:用删除令牌撤销评分

删除采用查询参数传递令牌的方式:

curl -X DELETE "/api/v1/apps/<package>/ratings/<id>?delete_token=<你的令牌>" \ -H "Authorization: Bearer <Token>"

令牌正确则返回204 No Content。出于隐私考虑,令牌错误时同样返回"未找到"(见 lib/plexus_web/controllers/api/v1/rating_controller.ex),不向调用方泄露令牌是否有效。

分页与增量同步技巧 💡

  • 列表端点/apps/apps/:package/ratings)统一支持page+limit,评分列表默认按app_build_numberupdated_at降序排列,天然呈现最新数据
  • 增量拉取:客户端记录上次同步时间,请求时带上last_updated参数即可只拿变更,大幅节省流量
  • 调试入口/swaggerui提供图形化调试,/api/openapi返回机器可读的 OpenAPI 规范(由 lib/plexus_web/api_spec.ex 基于路由自动生成)

小结:一张图理解调用流程

  1. 读数据:直接GET /apps/apps/:package,零门槛
  2. 写数据:注册设备 → 邮箱验证码换 Token → 带Authorization头调用写端点
  3. 反悔机制:保存创建评分时返回的delete_token,随时调用 DELETE 端点撤销

Plexus 的 API 设计克制而实用:公开读、设备级匿名写、令牌制删除,恰好匹配众包数据平台的信任模型。如果你正在为去 Google 生态构建 App 推荐或兼容性检测工具,这套端点已经足够支撑完整的数据闭环。

【免费下载链接】plexusRemove the fear of Android app compatibility on de-Googled devices.项目地址: https://gitcode.com/gh_mirrors/ple/plexus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询