云服务器内容精选
-
流控失败常见问题及处理 接口报错样例: {"status_code":429,"request_id":"7e6c1***********c610","error_code":"APIGW.0308","error_message":"The throttling threshold has been reached: policy user over ratelimit,limit:10,time:1 second","encoded_authorization_message":""} 处理方式: 华为云为客户运营能力API均提供默认的流量配额,用户可根据自己实际业务场景对额度进行升级。用户可以监视429状态码并构建重试机制。重试机制应遵循指数回退计划,以在必要时减少请求量。用户还可以在退避时间表中建立一些随机性,以避免严重的羊群效应。
-
后端服务调用失败“Backend unavailable”或超时“Backend timeout”原因分析 以下原因可能导致后端服务调用失败或者超时,请逐一排查。 原因 解决方案 后端服务地址错误。 在编辑API中修改后端服务地址。 如果是 域名 ,请确认域名能正确解析到后端服务IP地址。 后端超时时间设置不合理。 当后端服务没有在设置的后端超时时间内返回时,API网关提示后端服务调用失败。 在编辑API中增加后端超时时间。 如果“后端服务地址”在E CS (Elastic Cloud Server),ECS的安全组的出/入方向规则可能拦截了请求。 检查后端服务所在ECS的安全组,确保出/入方向端口规则和协议都设置正确。 请求协议配置错误,如后端服务为HTTP,在API网关配置为HTTPS。 创建的API与后端服务配置相同的协议。 API网关客户侧后端服务链接链路不通。 排查链接链路。 父主题: API调用
-
约束与限制 使用APP认证方式的API必须先通过应用授权才能调用。 APP认证方式的API只能授权给APP类型的应用。 如果对无认证方式的API进行应用授权,则系统会忽略此操作。 仅数据服务专享版支持重置APP类型应用的AppSecret。 仅DAYU Administrator、Tenant Administrator或者工作空间管理员支持重置APP类型应用的AppSecret。 APPSecret限制一分钟内重置一次,重置记录可在事件管理内查看。 重置APPSecret会导致已授权的API调用失败,请谨慎操作。
-
API调用授权概述 使用APP认证方式的API,需要配置调用授权,把API授权给指定凭据。API调用者在调用API时,可以通过凭据的Key和Secret进行安全认证,也可以通过AppCode进行简易认证。 配置APIG的API认证凭据 在API网关中创建一个凭据,生成密钥对(Key、Secret),在调用API时,API网关服务根据密钥对进行身份核对,完成鉴权。Key唯一且不可重置,支持重置Secret。 配置APIG的API简易认证AppCode API配置简易认证模式后,在调用API时,API网关服务既可以根据AppCode进行简易认证,也可以根据密钥对进行鉴权。 父主题: 配置API调用授权(可选)
-
流控失败常见问题及处理 接口报错样例: {"status_code":429,"request_id":"7e6c1***********c610","error_code":"APIGW.0308","error_message":"The throttling threshold has been reached: policy user over ratelimit,limit:10,time:1 second","encoded_authorization_message":""} 处理方式: 华为云为客户运营能力API均提供默认的流量配额,用户可根据自己实际业务场景对额度进行升级。用户可以监视429状态码并构建重试机制。重试机制应遵循指数回退计划,以在必要时减少请求量。用户还可以在退避时间表中建立一些随机性,以避免严重的羊群效应。
-
准备开发环境 安装开发工具 请根据所使用语言选择适合的开发工具。 安装2018.3.5或以上版本的IntelliJ IDEA,安装包请至IntelliJ IDEA官方网站下载。 安装2019 version 16.8.4及以上版本的Visual Studio,安装包请至Visual Studio官方网站下载。 安装开发语言环境 Java:安装1.8.111或以上版本的Java Development Kit,安装包请至Oracle官方下载页面下载。 Go:安装1.14及以上版本的Go安装包,安装包请至Go官方下载页面下载。 Python:安装2.7或3.X版本的Python安装包,安装包请至Python官方下载页面下载。 JavaScript:安装15.10.0及以上版本的Nodejs安装包,安装包请至Nodejs官方下载页面下载。 PHP:安装8.0.3及以上版本的PHP安装包,安装包请至PHP官方下载页面下载。 Android:安装4.1.2及以上版本的Android Studio,安装包请至Android Studio官方网站下载。
-
API调用授权(伙伴) 伙伴操作员账号调用API需要经过授权,可通过伙伴中心对操作员赋予有权限项的角色来进行授权,如何为角色授权请参见为组织人员分配权限。接口对应的权限项如下表,只要有权限项中的一条即可以调用。 未在表里的接口不需要做细粒度权限校验,操作员账号均可调用。 官网参考资料链接: 合作伙伴中心API参考(中国站) 表1 场景 子场景 接口名称 接口URL 权限项 权限项名称 管理产品 查询产品信息 查询产品的折扣和激励策略 GET /v2/products/incentive-discount-policies BPC_ITEM_SALES_040100 销售-激励-产品激励策略-产品折扣与激励策略查看 管理客户 注册客户 校验客户注册信息 POST /v2/partners/sub-customers/users/check-identity BPC_ITEM_SUBCUSTSERV_010118 销售-客户-客户管理-客户列表-创建伙伴子客户(能力开放) 发送验证码 POST /v2/bases/verificationcode/send BPC_ITEM_SUBCUSTSERV_010118 销售-客户-客户管理-客户列表-创建伙伴子客户(能力开放) 创建客户 POST /v2/partners/sub-customers BPC_ITEM_SUBCUSTSERV_010118 销售-客户-客户管理-客户列表-创建伙伴子客户(能力开放) 实名认证 申请个人实名认证 POST /v2/customers/realname-auths/individual BPC_ITEM_SUBCUSTSERV_010119 销售-客户-客户管理-客户列表-实名认证同步(能力开放) 申请企业实名认证 POST /v2/customers/realname-auths/enterprise BPC_ITEM_SUBCUSTSERV_010119 销售-客户-客户管理-客户列表-实名认证同步(能力开放) 申请实名认证变更 PUT /v2/customers/realname-auths/enterprise BPC_ITEM_SUBCUSTSERV_010119 销售-客户-客户管理-客户列表-实名认证同步(能力开放) 查询实名认证审核结果 GET /v2/customers/realname-auths/result BPC_ITEM_SUBCUSTSERV_010119 销售-客户-客户管理-客户列表-实名认证同步(能力开放) 管理客户 查询客户列表 POST /v2/partners/sub-customers/query BPC_ITEM_SUBCUSTSERV_010100|BPC_ITEM_SUBCUSTSERV_010500 销售-客户-客户管理-客户列表-查看列表 销售-客户-客户管理-二级经销商子客户-查看客户信息 查询客户的新客标签 POST /v2/partners/sub-customers/new-customers-tags/batch-query BPC_ITEM_SUBCUSTSERV_010100 销售-云经销商-云经销商管理-我的二级分销商列表-查看历史客户经理 管理云经销商 查询云经销商 查询云经销商列表 POST /v2/partners/indirect-partners/query BPC_ITEM_SALES_020100 销售-云经销商-云经销商管理-我的二级分销商列表-查询二级分销商列表 管理云经销商账户 向云经销商账户拨款 POST /v2/accounts/partner-accounts/indirect-partner-adjust BPC_ITEM_SALES_020104 销售-云经销商-云经销商管理-我的二级分销商列表-拨款 回收云经销商账户拨款 POST /v2/accounts/partner-accounts/indirect-partner-reclaim BPC_ITEM_SALES_020105 销售-云经销商-云经销商管理-我的二级分销商列表-回收 管理云经销商优惠券 查询已发放的代金券额度 GET /v2/partners/issued-coupon-quotas BPC_ITEM_SUBCUSTSERV_030600 销售-客户-券管理-已发放代金券-查询已发放列表 向云经销商发放代金券额度 POST /v2/partners/coupon-quotas/indirect-partner-adjust BPC_ITEM_SALES_020106|BPC_ITEM_SUBCUSTSERV_030104 销售-云经销商-云经销商管理-我的二级经销商列表-发放代金券额度 销售-客户-券管理-代金券额度-发放额度 回收代金券额度 POST /v2/partners/coupon-quotas/indirect-partner-reclaim BPC_ITEM_SUBCUSTSERV_030601|BPC_ITEM_SUBCUSTSERV_030602 销售-客户-券管理-已发放代金券额度-批量回收代金券额度 销售-客户-券管理-已发放代金券额度-回收代金券额度 查询代金券额度的发放回收记录 GET /v2/partners/coupon-quotas/records BPC_ITEM_SUBCUSTSERV_030102 销售-客户-券管理-代金券额度-查看操作记录 管理交易 管理客户账户 向客户账户拨款 POST /v2/accounts/partner-accounts/adjust-amount BPC_ITEM_SUBCUSTSERV_010103 销售-客户-客户管理-客户列表-拨款 查询客户账户余额 POST /v2/accounts/customer-accounts/balances/batch-query BPC_ITEM_SUBCUSTSERV_010103|BPC_ITEM_SUBCUSTSERV_010104|BPC_ITEM_SUBCUSTSERV_010100 销售-客户-客户管理-客户列表-拨款 销售-客户-客户管理-客户列表-回收 销售-客户-客户管理-客户列表-查看列表 回收客户账户余额 POST /v2/accounts/partner-accounts/reclaim BPC_ITEM_SUBCUSTSERV_010104 销售-客户-客户管理-客户列表-回收 查询收支明细 GET /v2/accounts/partner-accounts/account-change-records BPC_ITEM_FINANCE_030100 销售-账务-资金管理-收支明细-查看收支明细 查询调账记录 GET /v3/accounts/partner-accounts/adjust-records BPC_ITEM_FINANCE_040100 销售-客户-客户管理-调账记录-查看调账记录 查询伙伴/云经销商账户余额 GET /v2/accounts/partner-accounts/balances BPC_ITEM_VIEW_010100|BPC_ITEM_SUBCUSTSERV_010103|BPC_ITEM_SUBCUSTSERV_010104|BPC_ITEM_SALES_020104|BPC_ITEM_SALES_020105 主页-账号 销售-客户-客户管理-客户列表-拨款 销售-客户-客户管理-客户列表-回收 销售-云经销商-云经销商管理-我的二级分销商列表-拨款 销售-云经销商-云经销商管理-我的二级分销商列表-回收 管理优惠券 查询优惠券列表 GET /v2/promotions/benefits/coupons BPC_MENU_FINANCE_100100|BPC_ITEM_SUBCUSTSERV_050101 销售-客户-券管理-代金券额度-查看代金券列表 销售-客户-客户订单-订单支付-支付订单 查询优惠券额度 POST /rest/cbc/openapi/v2/partners/coupon-quotas/query BPC_ITEM_SUBCUSTSERV_030100 销售-客户-券管理-代金券额度-查看代金券列表 发放优惠券 POST /v2/promotions/benefits/partner-coupons BPC_ITEM_SUBCUSTSERV_030102|BPC_ITEM_SUBCUSTSERV_030103 销售-客户-券管理-代金券额度-发放代金券 销售-客户-券管理-现金券额度-查看操作记录 回收优惠券 POST /v2/promotions/benefits/partner-coupons/reclaim BPC_ITEM_SUBCUSTSERV_030201 销售-客户-券管理-已发放代金券-回收代金券 查询优惠券的发放回收记录 GET /v2/promotions/benefits/partner-coupons/records/query BPC_ITEM_SUBCUSTSERV_030102 销售-客户-券管理-代金券额度-查看操作记录 管理包年/包月订单 查询订单列表 GET /v2/orders/customer-orders BPC_ITEM_SUBCUSTSERV_060100|BPC_ITEM_SUBCUSTSERV_060200 销售-客户-客户订单-客户订单-查看列表 销售-客户-客户订单-二级经销商的客户-查看列表 查询订单详情 GET /v2/orders/customer-orders/details/{order_id} BPC_ITEM_SUBCUSTSERV_060100|BPC_ITEM_SUBCUSTSERV_060200 销售-客户-客户订单-客户订单-查看列表 销售-客户-客户订单-二级经销商的客户-查看列表 管理按需资源 查询客户按需资源列表 POST /v2/partners/sub-customers/on-demand-resources/query BPC_ITEM_SUBCUSTSERV_010105 销售-客户-客户管理-客户列表-查看客户资源 管理账单 - 查询客户月度消费账单 GET /v2/bills/partner-bills/subcustomer-bills/monthly-sum BPC_ITEM_FINANCE_090100 销售-账务-伙伴账单-查看伙伴账单 管理客户消费 查询伙伴消费子客户列表 POST /v2/bills/subcustomer-bills/res-fee-records/sub-customers/query BPC_ITEM_FINANCE_020100 销售-客户-客户消费-消费记录-查看列表 查询伙伴子客户消费记录 GET /v2/bills/subcustomer-bills/res-fee-records BPC_ITEM_FINANCE_020101 销售-客户-客户消费-消费记录-查看详情 父主题: API调用方式
-
调用API示例 在工程中引入sdk。 using APIGATEWAY_SDK; 生成一个新的Signer, 输入API所授权凭据的Key和Secret,可参考获取API的调用信息获取。 Signer signer = new Signer(); // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. signer.Key = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_AK"); signer.Secret = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_SK"); 生成一个Request对象,指定方法名、请求url和body,可参考获取API的调用信息获取。 HttpRequest r = new HttpRequest("POST", new Uri("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?query=value")); r.body = "{\"a\":1}"; 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 r.headers.Add("x-stage", "RELEASE"); 进行签名,执行此函数会生成一个新的HttpWebRequest,并在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。 1 HttpWebRequest req = signer.Sign(r); 若使用系统分配的子域名访问https请求的API,需要忽略证书校验,否则跳过此步。 System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(delegate { return true; }); 访问API,查看访问结果。 var writer = new StreamWriter(req.GetRequestStream()); writer.Write(r.body); writer.Flush(); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); var reader = newStreamReader(resp.GetResponseStream()); Console.WriteLine(reader.ReadToEnd());
-
URI GET /v1/{project_id}/openapi/called-records 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 limit 否 Integer 分页大小,默认1000,最大2000。 called_url 否 String 需要查询调用记录的URL,例如:/v1/{project_id}/sdg/database/watermark/embed start_time 否 Long 开始时间(Unix timestamp),单位:毫秒,例如:0 end_time 否 Long 结束时间(Unix timestamp),单位:毫秒,例如:1638515803572 marker 否 String 指定一个标识符。获取第一页时不用赋值,获取下一页时取上页查询结果的返回值。
-
响应示例 状态码: 200 OK { "total" : 11, "succeed" : 11, "failed" : 0, "openapi_called_records" : [ { "user_name" : "xxxxxxxxxxxxx", "user_id" : "xxxxxxxxxxxxxxxxx", "domain_name" : "xxxxxxxxxxxxxxxxx", "domain_id" : "xxxxxxxxxxxxxxxxxxx", "request_url" : "/v1/xxxxxxxxxxxxxxxxxxxxxxxxxxx/sdg/doc/watermark/embed", "request_method" : "POST", "response_code" : "200", "fail_reason" : "", "timestamp" : 1638427576524 } ], "next_marker" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } 状态码: 400 无效请求 { "error_code" : "dsc.40000011", "error_msg" : "Invalid parameter" }
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 total Integer 调用API总次数 succeed Integer 调用API成功次数 failed Integer 调用API失败次数 openapi_called_records Array of OpenApiCalledRecord objects API调用记录列表 next_marker String 获取下一页所需的标识符。 表4 OpenApiCalledRecord 参数 参数类型 描述 user_name String 调用API的user_name user_id String 调用API的user_id domain_name String 调用API的domain_name domain_id String 调用API的domain_id request_url String 调用API的URL request_method String http请求方法 response_code String http状态码 fail_reason String 调用API失败原因 timestamp Long 调用API的时间(Unix timestamp),单位:毫秒 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误信息
-
调用API 配置请求地址相关参数。 API调用场景 API请求参数配置 使用域名调用API ROMA API允许使用服务分配的子域名或服务绑定的域名调用API,无需另外配置。 使用IP调用API ROMA API的实例配置参数“app_route”已设置为“on”,允许通过IP访问API。 允许使用IP地址调用API,无需另外配置。 配置认证参数。 API认证方式 API请求参数配置 APP认证 签名认证 使用获取的SDK对API请求进行签名,具体请参考APP认证开发。 简易认证 在ROMA API请求中添加Header参数“X-Apig-AppCode”,参数值为获取API的请求信息中获取到的AppCode。 双重认证 在API请求参数中增加自定义认证信息进行认证。 凭证认证 在API请求中添加Header参数“X-HW-ID”,获取API的请求信息中获取到凭证信息的Key。 在API请求中添加Header参数“X-HW-AppKey”,获取API的请求信息中获取到凭证信息的Secret。 app_api_key认证 ROMA API的实例配置参数“app_api_key”已设置为“on”,开启app_api_key认证。 在API请求中添加Header或Query参数“apikey”,参数值为获取API的请求信息中获取到的Key或AppKey。 app_secret认证 ROMA API的实例配置参数“app_secret”已设置为“on”,开启app_secret认证,且“app_api_key”已设置为“off”,关闭app_api_key认证。 在API请求中添加Header参数“X-HW-ID”,参数值为API所授权的Key或客户端的AppKey。 在API请求中添加Header参数“X-HW-AppKey”,参数值为获取API的请求信息中获取到的Secret或AppSecret。 app_basic认证 ROMA API的实例配置参数“app_basic”已设置为“on”,开启app_basic认证。 在API请求中添加Header参数“Authorization”,参数值为"Basic "+base64(appkey+":"+appsecret),其中appkey和appsecret分别为获取API的请求信息中获取到的Key和Secret(或AppKey和AppSecret)。 app_jwt认证 ROMA API的实例配置参数“app_jwt”已设置为“on”,开启app_jwt认证。 在API请求中添加Header参数“Timestamp”,参数值为当前时间的Unix时间戳。 在API请求中添加Header参数“Authorization”,参数值为sha256(appkey+appsecret+timestamp),其中appkey和appsecret分别为获取API的请求信息中获取到的Key和Secret(或AppKey和AppSecret),timestamp为当前时间的Unix时间戳。 华为 IAM 认证 Token认证 先获取云服务平台的认证Token,然后在API请求中携带Token进行认证。 AK/SK认证 调用API时,使用获取的SDK对API请求进行签名,具体请参考IAM认证开发(AK/SK)。 双重认证 在API请求参数中增加自定义认证信息进行认证。 自定义认证 在API请求参数中携带认证信息进行认证。 无认证 无需认证,可直接调用API。
-
获取API的请求消息 在调用API前,您需要向API管理者获取API的请求信息,包括访问域名、请求协议、请求方法、请求路径以及请求参数。 根据API使用的安全认证方式,还要获取相关的请求认证信息: APP认证: 签名认证:向API管理者获取该API所授权应用的Key和Secret(或客户端的AppKey和AppSecret),以及用于调用API的SDK。 简易认证:向API管理者获取该API所在应用的AppCode。 其他认证:向API管理者获取该API所授权应用的Key和Secret(或客户端的AppKey和AppSecret)或凭证信息。 华为IAM认证:通过云服务平台的账号凭证(账号和密码 获取Token 或者AK/SK)进行认证。如果使用AK/SK进行认证,还需要向API管理者获取用于调用API的SDK。 自定义认证:向API管理者获取请求参数中要携带的自定义认证信息。 无认证:无需认证信息。
-
导入工程 打开IntelliJ IDEA,在菜单栏选择“Import Project”。 弹出“Select File or Directory to Import”对话框。 在弹出的对话框中选择解压后的SDK路径,单击“OK”。 “Import project from external model”选择“Eclipse”,单击“Next”,进入下一页后保持默认连续单击“Next”,直到“Please select project SDK”页面。 图2 Import Project 单击“Finish”,完成工程导入。 图3 Finish 完成导入后,目录结构如下图。 图4 目录结构
-
调用接口步骤 获取Token。 请参考《 统一身份认证 服务 API参考》的“获取用户Token”接口,获取Token。 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 请求内容示例如下: POST https://{iam_endpoint}/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "id": "xxxxxxxx" } } } } 其中: {iam_endpoint}请参见地区和终端节点获取。 username为用户名。 domainname为用户所属的账号名称。 ********为用户登录密码。 xxxxxxxx为项目ID。 项目ID可以在管理控制台上,单击用户名,在下拉列表中单击“我的凭证”,查看“项目ID”。 调用业务接口,在请求消息头中增加“X-Auth-Token”,“X-Auth-Token”的取值为1中获取的Token。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格