Continue SDK Python 客户端 GetModelsAddOnCheckoutUrl200Response 模型详解:Stripe 结账 URL 响应解析与实战调用
【免费下载链接】continueopen-source coding agent项目地址: https://gitcode.com/GitHub_Trending/co/continue
本篇文章以 Continue 开源项目的 Python SDK(位于仓库packages/continue-sdk/python)中自动生成的 API 模型文档 GetModelsAddOnCheckoutUrl200Response.md 为核心,深入讲解GetModelsAddOnCheckoutUrl200Response响应模型的字段结构、JSON 序列化/反序列化用法,以及与之配套的DefaultApi.get_models_add_on_checkout_url接口的调用方式。读完本文,你将能够在自己的 Python 客户端中正确创建 Stripe 结账会话、解析结账 URL,并接入 Continue Hub 的模型附加订阅(models add-on)流程。
模型定位:Continue Hub IDE API 中的结账响应对象
GetModelsAddOnCheckoutUrl200Response是 Continue SDK 中由 OpenAPI Generator 自动生成的 Pydantic 模型类,属于Continue Hub IDE API(OpenAPI 版本 1.0.0)。该 API 主要为 VS Code 和 JetBrains 的 Continue IDE 扩展服务,用于拉取助手(assistants)及其他相关信息。
从命名可以推断,该模型是「获取模型附加订阅结账 URL」接口(get_models_add_on_checkout_url)在 HTTP 200 成功状态下的响应体封装:后端会在 Stripe 上创建一个面向「models add-on」订阅的结账会话(checkout session),并把会话 URL 通过该模型的url字段返回给客户端,客户端拿到后即可引导用户跳转到 Stripe 托管结账页面完成订阅支付。
响应模型结构:单一url字段
原文档的属性表完整描述了该模型的全部字段:
| Name | Type | Description | Notes |
|---|---|---|---|
| url | str | Stripe checkout session URL | 必填 |
该模型仅包含一个必填字段url,类型为str,语义为「Stripe 结账会话 URL」。这一简洁结构与源码实现完全一致:在 get_models_add_on_checkout_url200_response.py 中,模型类继承自 Pydantic 的BaseModel:
class GetModelsAddOnCheckoutUrl200Response(BaseModel): url: StrictStr = Field(description="Stripe checkout session URL") __properties: ClassVar[List[str]] = ["url"]几个值得注意的实现细节:
- 字段类型使用 Pydantic 的
StrictStr,即严格字符串类型,赋值时会执行类型校验; model_config开启了populate_by_name=True(允许按字段名填充)与validate_assignment=True(赋值时即时校验),同时关闭了protected_namespaces限制;__properties声明了序列化时参与输出的字段白名单,仅url一个字段。
JSON 与字典的双向转换:序列化/反序列化实战
原文档给出的示例展示了该模型与 JSON 字符串、Python 字典之间的四种转换方式,这是实际开发中使用该模型最频繁的路径:
from openapi_client.models.get_models_add_on_checkout_url200_response import GetModelsAddOnCheckoutUrl200Response # TODO update the JSON string below json = "{}" # create an instance of GetModelsAddOnCheckoutUrl200Response from a JSON string get_models_add_on_checkout_url200_response_instance = GetModelsAddOnCheckoutUrl200Response.from_json(json) # print the JSON string representation of the object print(GetModelsAddOnCheckoutUrl200Response.to_json()) # convert the object into a dict get_models_add_on_checkout_url200_response_dict = get_models_add_on_checkout_url200_response_instance.to_dict() # create an instance of GetModelsAddOnCheckoutUrl200Response from a dict get_models_add_on_checkout_url200_response_from_dict = GetModelsAddOnCheckoutUrl200Response.from_dict(get_models_add_on_checkout_url200_response_dict)结合 模型源码,各方法的作用与实现如下:
| 方法 | 作用 | 底层实现 |
|---|---|---|
to_str() | 返回可读的字符串表示 | 基于model_dump(by_alias=True)的pprint.pformat输出 |
to_json() | 返回 JSON 字符串 | json.dumps(self.to_dict()),即先转字典再序列化 |
from_json(json_str) | 从 JSON 字符串构造模型实例 | cls.from_dict(json.loads(json_str)) |
to_dict() | 返回字典表示(按别名展开) | model_dump(by_alias=True, exclude_none=True),None字段会被忽略 |
from_dict(obj) | 从字典构造模型实例 | 提取obj.get("url")后交给model_validate校验 |
实际解析真实响应时,将json变量替换为接口返回的 JSON 字符串即可,例如'{"url": "https://checkout.stripe.com/c/pay/..."}';由于url是必填字段,传入缺少url的 JSON 会触发 Pydantic 校验错误。
配套接口调用:get_models_add_on_checkout_url
该响应模型是DefaultApi.get_models_add_on_checkout_url接口在 200 状态下的返回类型,接口定义位于 default_api.py。接口签名如下:
def get_models_add_on_checkout_url( profile_id: Optional[StrictStr] = None, vscode_uri_scheme: Optional[StrictStr] = None, ... ) -> GetModelsAddOnCheckoutUrl200Response: """Get Stripe checkout URL for models add-on Creates a Stripe checkout session for the models add-on subscription and returns the checkout URL."""HTTP 语义与参数
接口在序列化层(_get_models_add_on_checkout_url_serialize)中明确了请求细节:
- HTTP 方法:
GET - 资源路径:
/ide/get-models-add-on-checkout-url - 认证方式:
apiKeyAuth(Bearer 令牌) - Accept 头:
application/json - Query 参数(均为可选):
| 参数 | 类型 | 说明 |
|---|---|---|
profile_id | str | 需要拼接到回调 URL 中的 Profile ID |
vscode_uri_scheme | str | 需要拼接到回调 URL 中的 VS Code URI scheme(用于支付完成后唤起 IDE) |
完整的可运行示例
DefaultApi.md 中提供了带认证配置的完整调用示例,摘录整理如下(默认 API 主机为 SDK 配置中的https://api.continue.dev,Bearer 令牌从环境变量BEARER_TOKEN读取):
import openai_client # 实际包名为 openapi_client from openapi_client.models.get_models_add_on_checkout_url200_response import GetModelsAddOnCheckoutUrl200Response from pprint import pprint # 配置主机与 Bearer 认证 configuration = openapi_client.Configuration( host="https://api.continue.dev" ) configuration = openapi_client.Configuration( access_token=os.environ["BEARER_TOKEN"] ) with openapi_client.ApiClient(configuration) as api_client: api_instance = openapi_client.DefaultApi(api_client) profile_id = "profile_id_example" # str | 回调 URL 中携带的 Profile ID(可选) vscode_uri_scheme = "vscode_uri_scheme_example" # str | 回调 URL 中携带的 VS Code URI scheme(可选) try: # 创建 Stripe 结账会话并获取 URL api_response = api_instance.get_models_add_on_checkout_url( profile_id=profile_id, vscode_uri_scheme=vscode_uri_scheme, ) print("The response of DefaultApi->get_models_add_on_checkout_url:\n") pprint(api_response) except Exception as e: print("Exception when calling DefaultApi->get_models_add_on_checkout_url: %s\n" % e)拿到api_response.url后,即可将其作为用户跳转地址,引导用户在浏览器中完成 Stripe 托管的订阅结账流程。
响应状态码与错误模型
接口的响应类型映射(见 default_api.py)定义了三种可能的返回:
| 状态码 | 响应模型 |
|---|---|
| 200 | GetModelsAddOnCheckoutUrl200Response(本文主题) |
| 404 | ListAssistants404Response(资源不存在) |
| 500 | GetModelsAddOnCheckoutUrl500Response(服务端错误) |
错误响应模型同样位于 docs 目录 中,调用方应针对非 200 状态做相应的异常处理与用户提示。
单元测试与模型一致性
SDK 为该模型提供了对应的单元测试骨架 test_get_models_add_on_checkout_url200_response.py,测试类TestGetModelsAddOnCheckoutUrl200Response通过make_instance构造含url字段的实例,用于验证模型的创建行为;同时测试文件也印证了url是必填属性——在include_optional=False分支中,构造实例时依然需要提供url字段。
小结与扩展阅读
GetModelsAddOnCheckoutUrl200Response虽是一个只有单个url字段的轻量响应模型,但它串起了 Continue SDK 中「获取模型附加订阅结账 URL」的完整链路:DefaultApi.get_models_add_on_checkout_url(接口实现)→ HTTP 200 响应 → Pydantic 模型解析 →url字段驱动 Stripe 托管结账。
想要进一步了解该模型在接口层面的全貌,可以继续阅读以下仓库文件:
- 接口级文档:DefaultApi.md
- 同类响应模型:GetModelsAddOnCheckoutUrl500Response.md
- SDK 使用总览:packages/continue-sdk/python/api/README.md
- 模型源码实现:get_models_add_on_checkout_url200_response.py
【免费下载链接】continueopen-source coding agent项目地址: https://gitcode.com/GitHub_Trending/co/continue
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考