Endpoint 配置

本节主要介绍升级版 SDK 对于 Endpoint 的配置。

说明

Endpoint 是请求接口服务的网络域名,如产品 ECS 的某个 Endpoint:ecs.cn-hangzhou.aliyuncs.com。每个产品都有其独立的 Endpoint,并且 Endpoint 与服务区域 RegionId 有关,不同地域可能是不同的 Endpoint。

Endpoint 设置

升级版 SDK 在 Endpoint 寻址上简化了许多,只提供了最容易理解的两种方式,下面按优先级排列:

  1. 用户自定义:用户可以通过在初始化时指定云产品 Client 实例的请求地址,产品的 Endpoint 可以通过

    OpenAPI 开发者门户的产品主页中查找,具体参考文末。

func main() {
    config := &openapi.Config{
        // 您的AccessKey ID
        AccessKeyId: tea.String("<AccessId>"),
        // 您的AccessKey Secret
        AccessKeySecret: tea.String("<AccessSecret>"),
        // 访问的 Endpoint
        Endpoint: tea.String("<endpoint>"),
    }
    client, _err = ecs20140526.NewClient(config)
}

2. Endpoint 拼接规则:在请求产品 SDK 具有 Endpoint 数据时,当前通过 RegionId 寻址的逻辑才会生效,否则会在实例化 Client 对象时抛出异常,其 message 为config.endpoint can not be empty,必须使用用户自定义的方式指定 Endpoint。 Endpoint 数据文件示例(Ecs Endpoint Data),其中不具备的 Region 会通过拼接规则:${产品 Id}.${RegionId}.aliyuncs.com来进行拼接。

func main() {
    config := &openapi.Config{
        // 您的AccessKey ID
        AccessKeyId: tea.String("<AccessId>"),
        // 您的AccessKey Secret
        AccessKeySecret: tea.String("<AccessSecret>"),
        // 访问的 Region
        RegionId: tea.String("<RegionId>"),
    }
    client, _err := ecs20140526.NewClient(config)
}

文件上传 Endpoint

升级版本 SDK 还为用户提供了文件上传的 Endpoint 配置,分为两个:

  • 鉴权服务 openplatform 的地址,可以在 VPC 环境配置 VPC 地址来请求上传文件的鉴权信息。

package main

import (
    "encoding/json"
    "fmt"
    "os"

    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v4/client"
    util "github.com/alibabacloud-go/tea-utils/v2/service"
    "github.com/alibabacloud-go/tea/tea"
)

func main() {
    config := &openapi.Config{
        // 您的AccessKey ID
        AccessKeyId: tea.String("<AccessId>"),
        // 您的AccessKey Secret
        AccessKeySecret: tea.String("<AccessSecret>"),
        // 访问的 Region
        RegionId: tea.String("<RegionId>"),
        // 根据 regionId 设置 VPC 请求的地址
        OpenPlatformEndpoint: tea.String("openplatform-vpc.cn-shanghai.aliyuncs.com"),
    }
    client, err := facebody20191230.NewClient(config)
    if err != nil {
        panic(err)
    }
    f, err := os.Open("本地文件路径")
    if err != nil {
        panic(err)
    }
    request := &facebody20191230.DetectBodyCountAdvanceRequest{}
    request.SetImageURLObject(f)
    // 创建RuntimeObject实例并设置运行参数。
    runtime := &util.RuntimeOptions{}
    runtime.ReadTimeout = tea.Int(10000)
    resp, err := client.DetectBodyCountAdvance(request, runtime)
    if err != nil {
        panic(err)
    }
    // response 包含服务端响应的 body 和 headers
    body, err := json.Marshal(resp.Body)
    if err != nil {
        panic(err)
    }
    headers, err := json.Marshal(resp.Headers)
    if err != nil {
        panic(err)
    }
    fmt.Printf("body: %s\n", string(body))
    fmt.Printf("header: %s\n", string(headers))
}
  • 上传文件的地址,可以在 VPC 或者内网环境配置内网的地址来上传文件。

package main

import (
    "encoding/json"
    "fmt"
    "os"

    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    facebody20191230 "github.com/alibabacloud-go/facebody-20191230/v4/client"
    util "github.com/alibabacloud-go/tea-utils/v2/service"
    "github.com/alibabacloud-go/tea/tea"
)

func main() {
    config := &openapi.Config{
        // 您的AccessKey ID
        AccessKeyId: tea.String("<AccessId>"),
        // 您的AccessKey Secret
        AccessKeySecret: tea.String("<AccessSecret>"),
        // 访问的 Region
        RegionId: tea.String("<RegionId>"),
        // 根据 regionId 设置 VPC 请求的地址
        OpenPlatformEndpoint: tea.String("openplatform-vpc.cn-shanghai.aliyuncs.com"),
        // 根据 regionId 设置 OSS 请求的地址,internal:vpc 和经典网络、accelerate: 国外加速域名
        EndpointType: tea.String("internal"),
    }
    client, err := facebody20191230.NewClient(config)
    if err != nil {
        panic(err)
    }
    f, err := os.Open("本地文件路径")
    if err != nil {
        panic(err)
    }
    request := &facebody20191230.DetectBodyCountAdvanceRequest{}
    request.SetImageURLObject(f)
    // 创建RuntimeObject实例并设置运行参数。
    runtime := &util.RuntimeOptions{}
    runtime.ReadTimeout = tea.Int(10000)
    resp, err := client.DetectBodyCountAdvance(request, runtime)
    if err != nil {
        panic(err)
    }
    // response 包含服务端响应的 body 和 headers
    body, err := json.Marshal(resp.Body)
    if err != nil {
        panic(err)
    }
    headers, err := json.Marshal(resp.Headers)
    if err != nil {
        panic(err)
    }
    fmt.Printf("body: %s\n", string(body))
    fmt.Printf("header: %s\n", string(headers))
}

附:Endpoint 查找方式

产品的 Endpoint 可以通过在平台 开发者门户上寻找:

  1. 打开云产品主页:在首页选择相应云产品,例如 ECS:

产品选择

2. 找到服务区域列表:

Endpoint

3. 选择相应 Region 所对应的 Endpoint,进行复制粘贴即可。

还可以这样查找

在 API 调试界面,找到对应接口,选择服务地址 Region,平台会自动生成 SDK 代码,代码中可以查看需要的 Endpoint。

API调试

阿里云首页 阿里云SDK 相关技术圈