You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Cloud Endpoints服务器构建Google Python API?能否复用现有库?

可以复用googleapiclient调用自定义Cloud Endpoints端点

当然可以!googleapiclient.discovery.build()本质上是通过Discovery文档来生成服务客户端的,而Cloud Endpoints会自动生成符合Google标准的Discovery文档——这意味着你完全能复用这个库来调用自己的自定义端点,用法和调用官方服务几乎一致。

核心思路

Cloud Endpoints部署后,会对外暴露一个Discovery文档(JSON格式),里面定义了你的API所有方法、参数和请求结构。build()函数只要能拿到这个文档,就能像生成Compute服务客户端一样,生成你自定义API的客户端。

具体步骤&示例代码

  1. 确认Discovery文档可访问
    部署你的Cloud Endpoints后,Discovery文档的默认地址是:

    https://[你的项目ID].appspot.com/_ah/api/discovery/v1/apis/[你的API名称]/[你的API版本]/rest
    

    你可以直接在浏览器里打开这个地址,如果能返回结构化的JSON,说明文档生成正常。

  2. 用build()加载自定义API
    只需要在调用build()时,通过discoveryServiceUrl参数指定你的Discovery文档模板地址,其余用法和官方服务一致:

    from googleapiclient.discovery import build
    from google.auth import default
    from google.auth.transport.requests import Request
    
    # 处理认证(如果你的API需要认证,和调用官方服务逻辑一致)
    creds, project_id = default()
    if not creds.valid:
        creds.refresh(Request())
    authorized_http = creds.authorize(Request())
    
    # 构建自定义API的服务客户端
    service = build(
        'my_custom_api',  # 替换成你的API名称
        'v1',             # 替换成你的API版本
        http=authorized_http,
        # 替换成你的Discovery文档模板地址
        discoveryServiceUrl='https://your-project-id.appspot.com/_ah/api/discovery/v1/apis/{api}/{apiVersion}/rest'
    )
    
    # 调用自定义API方法(示例:假设你的API有一个get_user方法)
    response = service.get_user(user_id='123').execute()
    print(response)
    

注意事项

  • 如果你的API是公开无需认证的,可以不用处理授权,直接传http=None或者一个普通的requests.Session实例。
  • 调用自定义方法时,参数和请求体的用法和官方服务完全一致——比如需要传请求体就用body参数,路径参数直接作为方法的关键字参数传入。
  • 确保你的Cloud Endpoints部署配置正确,比如openapi.yaml或swagger.json里的API名称、版本和Discovery文档地址里的一致。

内容的提问来源于stack exchange,提问作者Ganesh Prabhu UK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:35:16