跳转至

通过 REST API 获取远程配置

Joystick Schematic

Joystick 在一个强大的平台中管理您的所有远程配置,并允许您轻松地通过 REST API 大规模检索它。

API 密钥

您需要创建一个 API 密钥来通过 API 检索内容。

请求和响应

这是通过 REST API 获取单个内容的请求和响应。您还可以通过单次调用获取多个内容

请求

端点

POST https://api.getjoystick.com/api/v1/config/:contentId/dynamic

:contentId 替换为您创建的配置内容 ID。:contentId 不区分大小写。

头部

头部 是否必需 注释
Content-Type application/json
X-Api-Key 您的 API 密钥 您为目标环境创建的 API 密钥。这对于每个环境都是不同的。

请求查询参数

查询参数 要求 描述
responseType 可选 区分大小写。表示在响应上序列化 'data' object。查看响应部分以获取输出。
使用:/config/:contentId/dynamic?responseType=serialized

请求体

请求体应为 JSON,且不能为空。至少应包含以下片段。

{
    "u": "",
    "p": {}
}   
{
    "u": "the-unique-user-id",
    "v": "3.2.1",
    "p": {
        "level": 1,
        "location": "north_pole",
        "balance": 101,
        "days_since_install": 14
    }
}   
属性 要求 描述
u string。必需。 这是特定用户的唯一标识符。我们使用此标识符将用户分割到粘性 AB 测试组中。至少发送一个空string。
p object。必需。 这是一个可以由 Joystick 用于细分的键:值属性字典(基于您发送的属性,可以返回不同的配置内容)。至少发送一个空object。查看使用详情
v string。可选。 这是发出请求的您的应用的语义版本。我们强烈建议发送此版本,因为我们可以根据语义版本提供向后兼容的配置修订。这必须是string形式的三部分语义版本,例如 "3.2.1"

示例

curl --location --request POST 'https://api.getjoystick.com/api/v1/config/:contentId/dynamic' \
--header 'X-Api-Key: 您的-API-密钥' \
--header 'Content-Type: application/json' \
--data-raw '{"u": "", "p": {}}'

您应该收到存储在 Joystick 中的内容。 获取 API

故障排查

遇到问题?查看我们的故障排查指南

响应

响应

// 这是默认响应,您的配置在 "data" 包装器中。
{
  "data":
  {
    "greeting": "你好,世界!"
  },
  "hash": "2277e0d4",
  "meta":
  {
    "uid": 0, "mod": 0, "seg":[]
  }
}   
// 通过添加查询参数 ?responseType=serialized 可以获取序列化的配置
{
  "data": "{ \"greeting\": \"你好,世界!\"}",
  "hash": "2277e0d4",
  "meta":
  {
    "uid": 0, "mod": 0, "seg":[]
  }
}   
// 通过从请求端点中删除尾部的 /dynamic,只接收配置内容,而不带 "data" 包装器。
{
    "greeting": "你好,世界!"
}   
响应属性 描述
data 这是您的配置内容,以格式良好的 JSON 返回,其中包括 a) 所有内联注释都被剥离出去,以及 b) 根据细分或 ab 测试替换的任何动态内容。这可以选择性地返回为序列化string。
hash 这是内容的哈希。您可以使用此哈希来确定自上次请求以来内容是否已更新。只有在内容发生更改时哈希才会更改。例如,如果在请求中获得相同的哈希,您可能不需要更新应用中的配置内容的缓存版本。
meta.uid 在 Joystick 中,我们将请求中发送的 u 参数通过哈希函数进行处理,并生成一个稳定的整数用户 ID(您发送的相同的 "u" string将始终生成相同的整数)。这是为了您的参考返回的。使用此整数是为了使用模 1000 将您的用户放入稳定的 ab 测试组中。
meta.mod meta.uid 的最后三位。这将帮助您确定用户被分配到哪个 AB 测试组。
meta.seg 这是一个object数组,将告诉您在此请求中更改了数据的细分名称和 ab 测试组变体名称。如果为空,则意味着响应是默认值,不在任何 AB 测试或细分中。在 动态内容 中了解更多。

理解 "meta.seg" 组件

响应的 meta.seg 组件对于商业智能或分析很重要。它将告诉您细分名称、变体名称以及您可以传递的其他小段信息。

{
    "data": {...},
    "hash": "2277e0d4",
    "meta": {
        "uid": 0,
        "mod": 0,
        "seg": [
        {
            "n": "我的测试",
            "v": "变体 A",
            "i": "可选信息"
        },
        {
            "n": "我的细分",
            "v": null, // 如果仅提供了细分详细信息,则 v 为 null。
            "i": "更多可选信息"
        }
        ]
    }
}
seg object部分 描述
n 响应包含的细分的名称。
v 变体名称。如果您正在使用 Joystick 进行 AB 测试,这将是响应包含的变体的名称或标签。
i 这是您可以发送的可选信息,以标记或识别特定的变体。这可以在动态映射上配置。

附加信息

我们强烈建议您的应用中有一个回退机制,以便在无法访问 Joystick 的情况下优雅地处理。请参阅我们的集成指南以获取更多信息!

您可以通过一个调用获取多个配置。请参阅我们的多内容 API

让我们开始吧!

获取沙盒帐户

为您的团队配备火箭助推器。今天就获取一个沙盒帐户

加入社区

前往我们的 Discord 服务器以获取技巧、支持和更多内容:Discord