日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

附錄:API調用示例

API調用方式分為Java SDK調用(AK/SK)、Python SDK、API-TOKEN方式。本篇API調用示例為調用模板,您可根據模板配置API的調用示例。

Java SDK調用方式

Java SDK簡介

Dataphin服務Java SDK是根據您自定義的所有API接口,自動生成的Java調用代碼,讓您無需復雜編程即可訪問Dataphin服務。這里向您介紹如何使用Dataphin服務SDK。

代碼文件的層級結構如下:

Java SDK文件夾

  • sdk/

    • ClientDemo.java這里提供了統一的API調用示例和方法。

  • lib

    • sdk-core-java-1.1.0.jarSDK的core包,為本SDK的核心依賴包。

    • sdk-core-java-1.1.0-sources.jar上述依賴包的源碼。

    • dataphin-sdk-core-java-v1.0.0.jarSDK的param包,為本SDK的構造請求參數的依賴包。

      Java SDK獲取方式如下:

      1. 在Dataphin首頁選擇服務 > 服務管理

      2. 在左側導航欄單擊調用示例

      3. 單擊API調用示例頁簽,單擊頁面右上方的Java SDK下載image按鈕,將下載SDK的param包添加至pom.xml中。

    • dataphin-sdk-core-java-v1.0.0-sources.jar上述依賴包的源碼。

    • fastjson-1.2.80_noneautotype.jar格式化JSON包。

  • ApiDocument.mdAPI接口文檔。

  • Readme.md本SDK使用指南。

  • LICENSE版權許可。

Java SDK調用流程

重要
  • 您首先需要初始化客戶端方可調用API。

  • CallApiDemo使用異步調用,同步參考ApiClient#getSync。

  • 您可以實例QueryParamRequest對象,并且設置請求參數滿足不同的查詢需要,詳情請參考調用實例中的packRequestParam(QueryParamRequest queryParamRequest)方法。

  • API文檔。API請求和返回結果信息請查看APIDocument.md。

  • 人工幫助。如果在使用中遇到棘手的問題,請加入我們官方用戶支持群來找我們。

步驟一:環境準備

  1. Dataphin服務Java SDK適用于JDK 1.6及以上版本。

  2. 您需要準備一對授權密鑰供SDK生成鑒權和簽名信息,即 [AppKey和AppSecret]。

    重要

    AppKey和AppSecret是Dataphin服務認證用戶請求的密鑰,這兩個配置如果保存在客戶端,請妥善加密。

  3. 在pom.xml中添加如下依賴, 如果添加dataphin-sdk-core-java報錯請手動添加該jar文件,路徑sdk/lib/dataphin-sdk-core-java-v1.0.0.jar(即單擊頁面右上方的Java SDK下載image按鈕,下載SDK的param包)。

    <dependency>
        <groupId>com.aliyun.api.gateway</groupId>
        <artifactId>sdk-core-java</artifactId>
        <version>1.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.80_noneautotype</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.dt</groupId>
        <artifactId>dataphin-sdk-core-java</artifactId>
        <version>v1.1.0</version>
    </dependency>

步驟二:引入Java SDK的API接口調用類

  1. 在API市場下載對應的API文檔。

  2. 導入CallApiDemo.java,修正CallApiDemo.java類的import、package。

    /*
     * Copyright 2018 Alibaba.com All right reserved. This software is the confidential and proprietary
     * information of Alibaba.com ("Confidential Information"). You shall not disclose such Confidential
     * Information and shall use it only in accordance with the terms of the license agreement you
     * entered into with Alibaba.com.
     */
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    
    import com.alibaba.cloudapi.sdk.constant.SdkConstant;
    import com.alibaba.cloudapi.sdk.enums.Scheme;
    import com.alibaba.cloudapi.sdk.model.ApiResponse;
    import com.alibaba.dt.dataphin.client.ApiClient;
    import com.alibaba.dt.dataphin.client.ApiClientBuilderParams;
    import com.alibaba.dt.dataphin.schema.OrderBy;
    import com.alibaba.dt.dataphin.schema.QueryParamRequest;
    import com.alibaba.fastjson.JSONObject;
    
    import com.google.common.base.Splitter;
    import com.google.common.collect.Lists;
    import com.google.common.collect.Maps;
    
    import static com.alibaba.cloudapi.sdk.constant.SdkConstant.CLOUDAPI_LF;
    
    public class CallApiDemo {
        private static final String HOST = "dataphin-os-gateway.atest-hadoop.aliyun.com";
    
        private static final int CODE = 200;
    
        public static void main(String[] args) throws Exception {
            callApi();
        }
    
        @SuppressWarnings("all")
        private static void callApi() {
            String apiId = "10008";
            String apiType = "get";
            String appKey = "敏感數據自行填充";
            String appSecret = "敏感數據自行填充";
            String apiReturnFields = "ds2,sex,age,name2,id";
            String listType = "LIST";
    
            //創建請求參數 ---------------------------------------
            QueryParamRequest queryParamRequest = new QueryParamRequest();
            //構造請求參數對象
            //---條件參數
            //添加查詢條件,其中key為對應的查詢字段,value為查詢字段對應的值, 例如這里的id為請求字段名,1為id對應的值,可以設置多個查詢參數
            HashMap<String, Object> condition = Maps.newHashMap();
            //注意:如果是 IN 類型的參數,使用 list 包裝參數值。
            queryParamRequest.setConditions(condition);
    
            //-- 排序(可選設置) 
            // 注意oracle和sqlServer使用分頁需要同時使用排序
            // 排序字段,根據返回參數指定升序或者降序, 例如返回結果按id進行升序, 可設置多個字段進行升序或者降序
            // 使用分頁則必須指定排序字段,并且要使用排序穩定的字段(例如主鍵、聯合主鍵)保證每次排序結果相同,避免分頁不準確
            ArrayList<OrderBy> orderList = Lists.newArrayList();
            //OrderBy.Order asc = OrderBy.Order.ASC;
            //OrderBy orderByColumn1 = new OrderBy("your order column", asc);
            //OrderBy orderByColumn2 = new OrderBy("your order column", asc);
            //orderList.add(orderByColumn1);
            //orderList.add(orderByColumn2);
            queryParamRequest.setOrderBys(orderList);
    
            //指定返回有權限的參數
            List<String> returnFiles = Lists.newArrayList(Splitter.on(",").split(apiReturnFields));
            queryParamRequest.setReturnFields(returnFiles);
    
            //進行分頁(可選).不設置,默認取1~1000條數據
            queryParamRequest.setPageStart(1);
            queryParamRequest.setPageSize(10);
    
            // 是否緩存查詢結果,開啟則會緩存同一個API相同條件、想通返回字段的查詢結果
            // 適用于數據不變化的查詢
            // 緩存時長默認30分鐘, 3.5.6 版本后,在開發API時可設置緩存時長
            queryParamRequest.setUseResultCache(true);
            queryParamRequest.setKeepColumnCase(true);
            //結束創建請求參數 ---------------------------------------
    
            ApiClient apiClient = createHttpClient(appKey, appSecret);
            try {
                ApiResponse response = listType.equalsIgnoreCase(apiType) ? apiClient.listSync(apiId, queryParamRequest)
                        : apiClient.getSync(apiId, queryParamRequest);
    
                String result = new String(response.getBody());
                String code = JSONObject.parseObject(result).get("code").toString();
                System.out.println(getResultString(response));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        private static ApiClient createHttpClient(String appKey, String appSecret) {
            ApiClientBuilderParams params = new ApiClientBuilderParams();
            params.setAppKey(appKey);
            params.setAppSecret(appSecret);
            params.setHost(HOST);
            //默認為http協議, 如果API 支持 HTTPS, 這里也可以設置HTTPS
            params.setScheme(Scheme.HTTP);
            params.setStage("RELEASE");
            params.setEnv("PROD");
            return new ApiClient(params);
        }
    
        private static String getResultString(ApiResponse response) {
            StringBuilder result = new StringBuilder();
            result.append("ResultCode:").append(CLOUDAPI_LF).append(response.getCode()).append(CLOUDAPI_LF);
            result.append("RequestId:").append(response.getHeaders().get("x-ca-request-id")).append(CLOUDAPI_LF);
            result.append("ErrorCode:").append(response.getHeaders().get("x-ca-error-code")).append(CLOUDAPI_LF);
            if(CODE != response.getCode()) {
                result.append("Error:").append(response.getHeaders().get("x-ca-error-message")).append(CLOUDAPI_LF);
            }
    
            result.append("ResultBody:").append(CLOUDAPI_LF).append(
                    new String(response.getBody(), SdkConstant.CLOUDAPI_ENCODING));
            return result.toString();
        }
    }

步驟三:準備您的AppKey,AppSecret進行填充

  1. 替換CallApiDemo里面對應的值。

  2. 執行main方法。

Python SDK調用流程

步驟一:環境準備

  1. Python SDK適用于Python3.9及以上版本。

    Python SDK獲取方式如下:

    1. 在Dataphin首頁選擇服務 > 服務管理

    2. 在左側導航欄單擊調用示例

    3. 單擊API調用示例頁簽,單擊頁面右上方的python調用示例下載image按鈕,獲取Python SDK core包。

  2. 您需要準備一對授權密鑰供SDK生成鑒權和簽名信息,即AppKey和AppSecret。

    重要

    AppKey和AppSecret是Dataphin服務認證用戶請求的密鑰,這兩個配置如果保存在客戶端,請妥善加密。

  3. 你需要準備一個JSON文件,格式如下:

     {
      "host": "e5c0fa75fdd74fea8e******.apigateway.res.aliyun.gdhchina.com", // 調用API的域名
      "port": 80,// 默認端口 80
      "impalaConfig": { // 調用impala需要配置值
          "pollingTimeout": 300, // impala輪詢最長時間,5分鐘,單位秒,可以不配置,默認5分鐘
          "pollingInterval": 800 // impala輪詢間隔,單位毫秒,可以不配置,默認800毫秒
      },
      "applicationConfig": { // 應用信息
          "appKey": "169683815******", // appKey 
          "appSecret": "0dbcd4b659d7489fbe44b7******" // app secret 
      },
      "apiConfig": { // api信息
          "apiNo": 10005,  // APIID
          "scheme": "HTTP", // API請求協議 HTTP 或 HTTPS
          "stage": "RELEASE", / / 固定值
          "env": "PROD", //固定值
          "method": "GET", // API的請求方式 GET 或 LIST
          "queryParamRequest": {
              "conditions":{"id":"1"} // api 請求參數和值
              "returnFields": [ // API返回參數集合
                  "real_qty" // 返回參數名稱
              ],
              "pageStart": 0, // 分頁碼
              "pageSize": 10, // 每頁數量
              "orderBys": [   // 排序參數設置
                  {"field":"字段名名稱","order":"DESC"}
              ],
              "useModelCache": "false", // 查詢參數是否緩存
              "useResultCache": "false", // 結果是否緩存 
              "keepColumnCase": "true" // 返回字段是小寫,默認true
          }
      }
    }

步驟二:部署Python SDK

  1. 安裝Python開發工具pycharm。

  2. 打開Python項目。

  3. 在Demo類的啟動參數上配置JSON文件路徑。

  4. 具體調用請參照demo.py。

    # -*- coding: utf-8 -*-
    import dataapi
    import sys
    
    print('參數列表:', str(sys.argv))
    
    with open(str(sys.argv[1]), encoding="utf-8") as f:
        json_obj = eval(f.read().replace('\n\u200b', ''))
    # 這里是讀取上下文的json文件,假如不需要json文件的話,直接填寫對應值的就好了
    
    # 網關調用地址
    host = json_obj["host"]
    # 網關調用端口
    port = json_obj["port"]
    # 可不配置。只對impala類型的API有效,輪詢超時時間
    pollingTimeout = json_obj["impalaConfig"]["pollingTimeout"]
    # 可不配置。只對impala類型的API有效,輪詢間隔
    pollingInterval = json_obj["impalaConfig"]["pollingInterval"]
    # app的信息,你用哪個APP來調用這個API
    appKey = json_obj["applicationConfig"]["appKey"]
    appSecret = json_obj["applicationConfig"]["appSecret"]
    # api的信息
    apiId = json_obj["apiConfig"]["apiNo"]
    # 用什么方式調用API? 值是:HTTP 或 HTTPS。注意私有網關只支持HTTP   【區分大小寫】
    scheme = json_obj["apiConfig"]["scheme"]
    # 寫死RELEASE即可
    stage = json_obj["apiConfig"]["stage"]
    # 有 PROD 和 PRE 兩種值 (如果是basic模式,傳死PROD; 如果是Dev-Prod模式,PROD表示查生產庫,PRE表示查開發庫   【區分大小寫】
    env = json_obj["apiConfig"]["env"]
    # 請求參數,必填
    queryParam = json_obj["apiConfig"]["queryParamRequest"]
    
    # API是 GET 還是 LIST?  【區分大小寫】
    method = json_obj["apiConfig"]["method"]
    
    if (host == None or host == ""):
        raise Exception("host信息缺失")
    
    if (appKey == None or appKey == ""):
        raise Exception("appKey信息缺失")
    
    if (appSecret == None or appSecret == ""):
        raise Exception("appSecret信息缺失")
    
    if (method == None or method == ""):
        raise Exception("method信息缺失")
    
    if (method == None or method == ""):
        raise Exception("method信息缺失")
    
    if (apiId == None or apiId == ""):
        raise Exception("apiNo信息缺失")
    
    # 配置impalat
    impalaConfig = dataapi.ImpalaConfig(pollingTimeout=pollingTimeout, pollingInterval=pollingInterval)
    # 配置app
    appConfig = dataapi.AppConfig(appKey=appKey, appSecret=appSecret)
    apiConfig = dataapi.ApiConfig(apiId, scheme, stage, env, queryParam, method)
    myConfig = dataapi.MyConfig(host, port, impalaConfig, appConfig, apiConfig)
    
    apiClient = dataapi.ApiClient(myConfig)
    apiClient.callApi(queryParam)

步驟三:調用API

  1. 在JSON文件中配置調用參數信息。

  2. Python SDK通過讀取JSON文件來組裝API調用的基礎參數。

  3. 調用datapi.callApi方法,具體參照demo.py。

TOKEN調用方式

API簽名的方法對報文進行簽名,目前只支持已經發布到生產環境的API進行調用。

總體流程:生成簽名->封裝請求->發起請求->接口響應。

1.API協議須知

支持的協議有HTTP、HTTPS(如果需要使用HTTPS協議需要完成獨立域名的綁定并上傳SSL證書)。

調用地址(host)

server-host:用于調用Dataphin服務端接口,host分為二級域名和獨立域名,二級域名為Dataphin配置,用戶不可更改;獨立域名為用戶自行綁定(獨立域名必須先在阿里云上備案),二級域名和獨立域名都可用于API的調用,域名查看位置如下所示:Dataphin數據服務->服務->平臺管理->網絡配置

請求類型

POST

只支持POST提交的請求,BODY一律使用JSON字符串。

公共入參

參數名

位置

是否必填

示例

說明

x-ca-timestamp

Header

1575363974058

API調用者傳遞時間戳(與date相對應,15分鐘內有效,取當前調用API的時間)。

x-ca-nonce

Header

1f4e0103-08de-4b8a-bf47-46d6d5460722

API每次請求的唯一標識符(15分鐘不可重復,使用UUID生成即可,每次調用API生成一個新的nonce)。

date

Header

Tue Dec 03 17:06:14 CST 2019

時間戳對應的日期(15分鐘內有效,取當前調用API的時間)。

content-md5

Header

IbabPuoaJ//QVeI62Hc3Tg==

Body的MD5值。

x-ca-signature

Header

cUh2QxTNb4s/zmGMDzmbfMSi8kd8W/caLXXyUhDv88g=

通過簽名計算規則計算的請求簽名串。

accept

Header

application/json; charset=utf-8

響應格式。

x-ca-key

Header

2037**895

appkey,調用API的身份標識。

host

Header

7229fc4974**-cn-shanghai.alicloudapi.com

訪問域名。

x-ca-stage

Header

RELEASE

生產環境標識。

x-ca-signature-headers

Header

x-ca-nonce,x-ca-timestamp,x-ca-key,x-ca-signature-method,x-ca-stage

指定哪些Header參與簽名(目前固定這些參數)。

Content-Type

Header

application/octet-stream; charset=utf-8

請求格式。

x-ca-signature-method

Header

HmacSHA256

簽名算法。

user-agent

Header

ALIYUN-ANDROID-DEMO

請求標識(預留參數,目前不參數簽名)。

ca_version

Header

1

版本(預留參數,目前不參數簽名)。

請求格式

  • 請求格式:POST [host]/請求方式/API_ID?appKey=應用的AppKey&env=PROD。

  • 請求方式取值:get或者list,API_ID為API的唯一標識,請求方式和API_ID可在調用->服務調用->已授權API服務->API調試頁面獲取。appKey為該API綁定的應用的唯一標識,可在調用->應用管理頁面獲取,env=PROD表示生產環境上的API。請求URL格式為:host/list/10209?appKey=203763395&env=PROD

2.生成簽名

請求簽名,是基于請求內容計算的數字簽名,用于API識別用戶身份。客戶端調用API時,需要在請求中添加計算的簽名(X-Ca-Signature)。

步驟一:構造待簽名字符串stringToSign簽名。

Headers為1.2.2公共入參中x-ca-signature-headers指定的參數。

HTTPMethod固定為POST,API只支持POST請求。格式如下:

String stringToSign=
HTTPMethod + "\n" +
Accept + "\n" +
Content-MD5 + "\n"
Content-Type + "\n" +
Date + "\n" +
Headers + "\n" +
Url

stringToSign中的每個值都還需要加換行符, 示例如下:

String stringToSign=
POST
application/json; charset=utf-8
v+x4pvIfqCrltJOluXqJTQ==
application/octet-stream; charset=utf-8
Wed, 15 Apr 2020 11:09:01 GMT
x-ca-key:222
x-ca-nonce:aaa2b0c7-527a-4963-b36e-a187b62b6fad
x-ca-signature-method:HmacSHA256
x-ca-stage:RELEASE
x-ca-timestamp:1586948941999
/list/10870?appKey=222&env=PROD

Content-MD5是指Body的MD5值

計算方式為:String content_MD5 = Base64.encodeBase64(MD5(bodyStream.getbytes("UTF-8")));

說明
  • bodyStream為字節數組。

  • 正常情況下,base64的結果為24位,因與服務器有約定,在超過24位的情況下,截取前24位。

以Java代碼為示例計算Content-MD5:

 // bodyJsonString為請求body的json字符串
  String bodyJsonString = "{\"accountCode\":\"111111\"}";
  byte[] bytes = bodyJsonString.getBytes();
  final MessageDigest md = MessageDigest.getInstance("MD5");
  md.reset();
  md.update(bytes);
  byte[]md5Result = md.digest();
  String base64Result = Base64.encodeBase64String(md5Result);
  /* * 正常情況下, base64的結果為24位,因與服務器有約定,在超過24位的情況下,截取前24位 */
  return base64Result.length() > 24 ? base64Result.substring(0, 23) : base64Result;

Headers

  • Headers是指參與Headers簽名計算的Header的Key、Value拼接的字符串,建議對X-Ca開頭以及自定義Header計算簽名。

    說明

    參數X-Ca-Signature、X-Ca-Signature-Headers、Accept、Content-MD5、Content-Type、Date不參與Headers簽名計算。

  • Headers組織方法:對參與Headers簽名計算的Header的Key按照字典排序后使用如下方式拼接,如果某個Header的Value為空,則使用HeaderKey+ “:” + “\n”參與簽名,需要保留 Key 和英文冒號。示例如下:

    String headers =
    HeaderKey1 + ":" + HeaderValue1 + "\n"\+
    HeaderKey2 + ":" + HeaderValue2 + "\n"\+
    ...
    HeaderKeyN + ":" + HeaderValueN + "\n"
  • 將Headers簽名中Header的Key使用英文逗號分割放到Request的Header中,Key為:X-Ca-Signature-Headers

Url

Url格式為:/請求方式(get或list)/API_ID?appKey=應用的AppKey&env=PROD。

步驟二:使用appSecret計算簽名獲得x-ca-signature。

說明

AppSecret為APP的密鑰,請在應用中獲取。

腳本格式如下:

Mac hmacSha256 = Mac.getInstance("HmacSHA256");
byte[] keyBytes = appSecret.getBytes("UTF-8");
hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256"));
String sign = new String(Base64.encodeBase64(Sha256.doFinal(stringToSign.getBytes("UTF-8")),"UTF-8"));

Java代碼示例如下:

Mac hmacSha256 = Mac.getInstance("HmacSHA256");
byte[] keyBytes = secretKey.getBytes(SdkConstant.CLOUDAPI_ENCODING);
hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256"));
byte[] md5Result = hmacSha256.doFinal(strToSign.getBytes(SdkConstant.CLOUDAPI_ENCODING));
return String x_ca_signature = Base64.encodeBase64String(md5Result);
return  x_ca_signature;

使用PostMan調用示例

步驟一:請求地址

POST請求地址為:host/list/100236?appKey=203760895&env=PROD。您可參考請求格式來編輯地址。

步驟二:填入簽名計算值到Header中

Header示例如下,您可參考公共入參填寫。

x-ca-nonce:1f4e0103-08de-4b8a-bf47-46d6d5460722
date:TueDec0317:06:14CST2019
content-md5:IbabPuoaJ//QVeI62Hc3Tg==
x-ca-signature:cUh2QxTNb4s/zmGMDzmbfMSi8kd8W/caLXXyUhDv88g=
accept:application/json;charset=utf-8
x-ca-key:203760895
host:7229fc49743a4654b62de0756d7554ac-cn-shanghai.alicloudapi.com
x-ca-stage:RELEASE
x-ca-signature-headers:x-ca-nonce,x-ca-timestamp,x-ca-key,x-ca-signature-method,x-ca-stage
Content-Type:application/octet-stream;charset=utf-8
x-ca-signature-method:HmacSHA256
//user-agent:ALIYUN-ANDROID-DEMO
//ca_version:1

步驟三:填入body

說明
  • Content-Type使用application/octet-stream; charset=utf-8。

  • 在PostMan請求示例中Header和body參數可根據已經提供Java語言的SDK直接生成并填入后發起API請求,如果使用的不是Java語言調用API,開發者可參照Java語言的SDK生成簽名和Body方式或者TOKEN的方式生成自己需要的開發語言的簽名,并填入Header和Body中完成API的調用。

body示例如下:

{"conditions":{"id":1},"orderBys":[],"returnFields":["name"],"useModelCache":false,"useResultCa
che":false}

錯誤排查和錯誤碼表

如何獲取公共錯誤

所有的API請求只要請求參數和URL無誤,就會返回請求結果信息。

  • 用戶需要查看返回結果的頭部,即Header部分。返回參數如示例:

    X-Ca-Request-Id: 7AD052CB-EE8B-4DFD-BBAF-EFB340E0A5AF
  • 請求唯一ID,請求一旦進入Dataphin服務應用后,Dataphin服務就會生成請求ID并通過響應頭返回給客戶端,建議客戶端與后端服務都記錄此請求ID,可用于問題排查與跟蹤。

  • Dataphin服務返回的錯誤消息,當請求出現錯誤時Dataphin服務會通過響應頭將錯誤消息返回給客戶端。

    X-Ca-Error-Message: Invalid Url
  • 當打開Debug模式后會返回Debug信息,此信息后期可能會有變更,僅用做聯調階段參考。

    X-Ca-Debug-Info: {"ServiceLatency":0,"TotalLatency":2}

    在Header中獲得X-Ca-Error-Message可以基本明確報錯原因,而X-Ca-Request-Id可以用于提供給這邊的支持人員,供支持人員搜索日志。

公共錯誤碼

客戶端錯誤

錯誤代碼

HTTP狀態碼

語義

解決方案

Throttled by APP Flow Control

403

因APP流控被限制

調用頻率過高導致被流控,可以聯系服務提供方放寬限制。

Throttled by API Flow Control

403

因API流控被限制

調用頻率過高導致被流控,可以聯系服務提供方放寬限制。

Throttled by DOMAIN Flow Control

403

因二級域名流控被限制

直接訪問二級域名調用API,每天被訪問次數上限1000次。

TThrottled by GROUP Flow Control

403

因分組流控被限制

調用頻率過高導致被流控,可以聯系服務提供方放寬限制。

Empty Request Body

400

body為空

請檢查請求Body內容。

Invalid Request Body

400

body無效

請檢查請求Body。

Invalid Param Location

400

參數位置錯誤

請求參數位置錯誤。

Invalid Url

400

Url無效

請求的 Method、Path或者環境不對。請參照錯誤說明Invalid Url。

Invalid Domain

400

域名無效

請求域名無效,根據域名找不到 API。請聯系 Dataphin服務。

Invalid HttpMethod

400

HttpMethod無效

輸入的Method不合法。

Invalid AppKey

400

AppKey無效或不存在

請檢查傳入的AppKey。注意左右空格的影響。

Invalid AppSecret

400

APP 的Secret錯誤

檢查傳入的AppSecret。注意左右空格的影響。

Timestamp Expired

400

時間戳過時

請核對請求系統時間是否為標準時間。

Invalid Timestamp

400

時間戳不合法

請參照請求簽名說明文檔。

Empty Signature

404

簽名為空

請傳入簽名字符串,請參照請求簽名說明文檔。

Invalid Signature, Server StringToSign:%s

400

簽名無效

簽名無效,參照Invalid Signature錯誤說明

Invalid Content-MD5

400

Content-MD5值不合法

請求Body為空,但傳入了MD5值,或MD5值計算錯誤。請參照請求簽名說明文檔。

Unauthorized

403

未被授權

APP未獲得要調用的API的授權。請參照錯誤說明Unauthorized。

Nonce Used

400

SignatureNonce已被使用

x-ca-nonce不能被重復使用,從新生成x-ca-nonce

API Not Found

400

找不到API

傳入的API請求地址或HttpMethod不正確,或已下線。

服務器端錯誤(調用 API)

以下為API服務端錯誤。

錯誤代碼

HTTP狀態碼

語義

解決方案

Internal Error

500

內部錯誤

建議重試

Failed To Invoke Backend Service

500

底層服務錯誤

API底層服務錯誤,建議重試

Service Unavailable

503

服務不可用

建議重試

Async Service

504

服務超時

建議重試

服務器端錯誤(執行SQL語句)

代碼

OS狀態碼

語義

DPN-OLTP-COMMON-000

Success

成功

DPN-OLTP-COMMON-001

Internal Error:{0}

系統發生未知異常

DPN-OLTP-COMMON-002

Parameter error

參數異常

DPN-OLTP-COMMON-003

Not support: {0}

系統發生未知異常

DPN-OLTP-COMMON-004

Sql AST Parser Exception:{0}

SQL解析異常

DPN-OLTP-ENGINE-001

Param Error : {0}.

參數錯誤

DPN-OLTP-ENGINE-002

{0} Not Found.

對象找不到

DPN-OLTP-ENGINE-003

{0} Not Support.

不支持

DPN-OLTP-ENGINE-004

Communication Table Error : {0}.

通信表錯誤

DPN-OLTP-ENGINE-005

Sql Parser Error: {0}.

SQL解析失敗

DPN-OLTP-ENGINE-006

Meta Error: {0}.

元數據錯誤

DPN-OLTP-ENGINE-007

Param Handling Error: {0}.

參數處理錯誤

DPN-OLTP-ENGINE-008

Build Execute Model Error: {0}.

構建執行模型錯誤

DPN-OLTP-ENGINE-009

Execute Error: {0}.

執行失敗

DPN-OLTP-ENGINE-010

DataSource Error: {0}.

數據源錯誤

DPN-OLTP-ENGINE-011

HBase DataSource Not Support: {0}.

HBase引擎不支持

DPN-OLTP-ENGINE-012

Object Serialize Error:{0}

對象序列化失敗

DPN-OLTP-ENGINE-013

Columns Auth Check Failed: {0}

權限校驗失敗

DPN-OLTP-ENGINE-014

ElasticSearch DataSource Not Support: {0}.

ES引擎不支持

DPN-OLTP-ENGINE-015

MongoDB DataSource Not Support: {0}.

MongoDB引擎不支持

DPN-OLTP-ENGINE-016

Column {0} Codec Error : {1}

字段類型錯誤

DPN-OLTP-ENGINE-017

Redis Cache Failed : {0}

Redis緩存異常

DPN-OLTP-ENGINE-018

Multiple Physical Tables Not Support: {0}.

跨數據源不支持

DPN-OLTP-ENGINE-019

Data Value {0} Codec Error : {1}

數據類型編碼或者轉換失敗

DPN-OLTP-ENGINE-20

Circuit breaker error: {0}.

熔斷

DPN-OLTP-ENGINE-21

Rate Limit error: {0}.

限流

DPN-OLTP-ENGINE-018-01

Not support group by

跨數據源不支持group by

DPN-OLTP-ENGINE-018-02

Not support order by

跨數據源不支持order by

DPN-OLTP-ENGINE-018-03

Not support without where condition

跨數據源不支持沒有 where條件

DPN-OLTP-ENGINE-018-04

Not support page start not 0

跨數據源不支持page start不等于0

DPN-OLTP-ENGINE-018-05

Not support 'or' operation in where

跨數據源不支持在where條件中存在or操作

DPN-OLTP-ENGINE-018-06

Not support a select item

跨數據源不支持在一個 select item中有來自多個物理表的字段

DPN-OLTP-ENGINE-018-07

All primary key must in where

跨數據源查詢必須所有的主鍵都在

DPN-OLTP-JDBC-001

Session missing in request header.

Request Head miss session

DPN-OLTP-JDBC-002

Session id and account id not match, accountId:{0}, sessionId:{1}.

Session id和account id not match

DPN-OLTP-JDBC-003

Database forbidden, accountId:{0}, database:{1}.

用戶無權訪問數據庫

DPN-OLTP-JDBC-004

Table forbidden, accountId:{0}, sql:{1}.

用戶無權訪問數據表

DPN-OLTP-JDBC-005

AccountId not found, accountId:{0}

account id出錯

DPN-OLTP-OLAP-001

Olap client error : {0}.

Olap客戶端失敗

DPN-OLTP-JDBC-002

Olap task run error : {0}.

Olap客戶端運行失敗

常見問題

問題:調用API報404 回答

  • 如果綁定了獨立域名,請檢查是HTTP協議還是HTTPS協議。

  • 檢查調用的API創建的類型是list還是get,因為list/get會作為URL的一部分。

  • 檢查API是否發布到對應的環境。

問題:調用API報400 回答

  • 請檢查x-ca-timestamp是否在15分鐘的有效期內,x-ca-nonce在15分鐘內是否被重復使用,建議每次請求API,x-ca-timestamp取當前時間,x-ca-nonce新生成可以用UUID生成,唯一標識,沒有格式要求。

  • 檢查使用AppKey、AppSecret是否前后有空格。

  • 注意檢查自己客戶端的簽名值是否多加了空格,傳給服務端的沒有加(Invalid Signature),檢查stringToSign中的值是否有空格,如客戶端簽名Content-Type:application/octet-stream; charset=utf-8有空格,但是傳給服務端的沒有空格Content-Type:application/octet-stream;charset=utf-8,就會報錯Invalid Signature