跳转到主要内容
API

生命周期

API 围绕单一的、持续演进的 GraphQL 端点构建。这种架构确保新功能和性能改进能够持续交付,而无需在 API 版本之间进行迁移。

本页概述了 API 中不同的稳定性级别、稳定 API 的稳定性保证、变更的类型(破坏性与非破坏性),以及弃用的管理方式。有关当前处于预览阶段的功能,请参见实验性功能。

功能生命周期

每个功能都处于三个稳定性级别之一:alpha、beta 或 stable。大多数功能会依次经历这些级别,而稳定功能只能通过弃用流程下线。

Lifecycle
text
[ ALPHA ] ──> [ BETA ] ──> [ STABLE ] ──> [ DEPRECATED ] ──> [ REMOVED ] Opt-in        Enabled                      12+ month               by default                   notice window

稳定 API

稳定功能代表 API 中可用于生产环境的核心部分。变更分为两类:非破坏性变更和破坏性变更。

非破坏性变更

向后兼容的新增内容,不会影响现有集成。这些变更会持续发布,无需提前通知,也无需弃用流程。

非破坏性变更包括:

  • 添加新的查询、变更或订阅。
  • 为现有操作添加新的可选输入参数。
  • 添加带有默认值且保持现有行为的新参数。
  • 为现有操作的输出添加新字段。
  • 将必需的输入参数改为可选。
  • 为现有枚举类型添加新值。

为非破坏性变更做好准备

非破坏性变更仍可能影响做出严格假设的客户端。为使集成保持稳健:

  • 避免严格的对象反序列化,否则当负载中出现额外属性时会失败。
  • GraphQL enum 类型是非穷尽的,并会随时间扩展。请始终在客户端逻辑中实现回退的默认分支。
  • 检查错误的 extensions.exception.code 值,而不是匹配人类可读的错误字符串。

破坏性变更和弃用

破坏性变更可能会破坏正在运行的现有集成。因此,任何破坏性变更都必须首先经过 12 个月的弃用流程。

破坏性变更包括:

  • 删除或重命名现有的查询、变更、订阅、字段或输入参数。
  • 删除或重命名枚举值。
  • 更改现有字段或输入参数的数据类型。
  • 添加新的必需输入参数。
  • 将可选输入参数改为必需。
  • 更改现有字段的业务逻辑或行为。
  • 将输出字段从非空(!)改为可为空。
  • 更改输入参数或字段的默认值。
  • 更改分页默认值、最大页面大小或文档中说明的排序顺序。

弃用时间线

当破坏性变更需要删除或替换稳定功能时,将遵循严格的三阶段时间线:

  1. 弃用公告该功能在 GraphQL schema 中被标记为 @deprecated 指令。如适用,将提供迁移路径。弃用及相应的移除日期会同时通过三个监控渠道公布。
  2. 有效通知期(第 1–12 个月)已弃用的功能保持完全可用。如果提供了迁移路径,集成方应在这 12 个月的窗口期内更新其应用并采用新字段。
  3. 永久移除到达移除日期时,该功能将被永久移除。此后任何使用该功能的请求都将无法通过 schema 验证,并返回 GraphQL 错误。

跟踪弃用

通过三个渠道识别并跟踪即将下线的功能:

  • 在您的 schema 工具中检查 @deprecated(reason: "...") 指令。
  • 在 API 的旧版部分或弃用门户中查看停用日期和迁移指南。
  • 监控 API 响应中直接返回的 DEPRECATED_FEATURE 警告。
响应示例
Example request and response
graphql
{  "data": {    "station": {      "id": "5e8c22366f9c5f23ab0eff39",      "amenityList": [        {          "name": "Coffee Shop",          "foursquareUrl": "https://foursquare.com/v/example"        }      ]    }  },  "extensions": {    "warnings": [      {        "code": "DEPRECATED_FEATURE",        "path": ["amenityList", "foursquareUrl"],        "message": "This feature is deprecated and will be removed. To prevent errors and service disruptions, migrate to the recommended alternative before the scheduled removal date. Visit https://developers.chargetrip.com/deprecations for more information."      }    ]  }}

此内容是否有帮助?

开发者

Chargetrip ©

状态未知

管理 Cookie

生效日期: 2024 年 3 月 20 日 · 更新日期: 2023 年 1 月 25 日

我们使用 Cookie 来帮助改善您在 developers.chargetrip.com 上的体验。本 Cookie 政策是隐私政策的一部分,涵盖您的设备与我们网站之间的 Cookie 使用情况。我们还提供我们可能使用的第三方服务的基本信息,这些服务也可能在其服务中使用 Cookie,但不在我们的政策涵盖范围内。

如果您不希望接受我们的任何 Cookie,应指示您的浏览器拒绝来自 developers.chargetrip.com 的 Cookie,但请理解,我们可能因此无法为您提供某些您所需的内容和服务。

Cookie 是网站在您访问时存储在您设备上的一小段数据,通常包含有关该网站本身的信息、使网站在您再次访问时识别您的网络浏览器的唯一标识符、服务于 Cookie 自身用途的其他数据,以及 Cookie 自身的有效期。

Cookie 用于启用某些功能(例如登录)、跟踪网站使用情况(例如分析)、存储您的用户设置(例如时区、通知偏好),以及个性化您的内容(例如广告、语言)。

由您所访问的网站设置的 Cookie 通常称为“第一方 Cookie”,通常只跟踪您在该特定网站上的活动。由其他网站和公司(即第三方)设置的 Cookie 可用于在使用同一第三方服务的其他网站上跟踪您。

由您所访问的网站设置的 Cookie 通常称为“第一方 Cookie”,通常只跟踪您在该特定网站上的活动。由其他网站和公司(即第三方)设置的 Cookie 可用于在使用同一第三方服务的其他网站上跟踪您。

定向/广告 Cookie 用于确定哪些推广内容与您及您的兴趣更相关、更合适。网站可能使用它们来投放定向广告,或限制您看到某则广告的次数。这有助于公司提高其营销活动的有效性以及呈现给您的内容的质量。这些 Cookie 可能由您所访问的网站(第一方)或第三方服务设置。由第三方设置的定向/广告 Cookie 可用于在使用同一第三方服务的其他网站上跟踪您。我们在我们的网站上使用定向/广告 Cookie。

定向/广告 Cookie 用于确定哪些推广内容与您及您的兴趣更相关、更合适。网站可能使用它们来投放定向广告,或限制您看到某则广告的次数。这有助于公司提高其营销活动的有效性以及呈现给您的内容的质量。这些 Cookie 可能由您所访问的网站(第一方)或第三方服务设置。由第三方设置的定向/广告 Cookie 可用于在使用同一第三方服务的其他网站上跟踪您。我们在我们的网站上使用定向/广告 Cookie。

第三方承诺

在启用所有第三方提供商的服务之前,我们会审查其隐私政策,以确保其做法与我们一致。我们绝不会故意引入损害或违反用户隐私的第三方服务。

Cookie
google-cookie-consent
描述
存储您的 Cookie 偏好,即您已接受或拒绝了哪些类别,以便我们在您每次访问时都尊重您的选择,并仅加载您允许的分析或营销工具。
有效期
2 年

如果您不希望接受我们的 Cookie,可以指示您的浏览器拒绝来自我们网站的 Cookie。大多数浏览器默认配置为接受 Cookie,但您可以更新这些设置,以完全拒绝 Cookie,或在网站尝试设置 Cookie 时通知您。

如果您使用多台设备浏览网站,可能需要在每台设备上分别更新您的设置。

虽然阻止某些 Cookie 对网站体验的影响很小,但阻止所有 Cookie 可能意味着您无法访问您所浏览网站上的某些功能和内容。

我们可能会不时更新本 Cookie 政策,例如以反映我们所使用 Cookie 的变化,或出于其他运营、法律或监管原因。请重新访问本 Cookie 政策,以了解我们对 Cookie 及相关技术的使用情况。本 Cookie 政策顶部的日期表示其最近一次更新的时间。