云服务器内容精选

  • URI GET /v1/{project_id}/app-auth/apps/{app_name}/exists 表1 路径参数 参数 是否必选 参数类型 描述 app_name 是 String app名称。 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 表2 Query参数 参数 是否必选 参数类型 描述 workspace_id 否 String 工作空间ID。获取方法请参见查询工作空间列表。未创建工作空间时默认值为“0”,存在创建并使用的工作空间,以实际取值为准。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 exists Boolean APP是否存在。 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 403 表6 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。 状态码: 404 表7 响应Body参数 参数 参数类型 描述 error_code String ModelArts错误码。 error_msg String 具体错误信息。
  • 准备环境 已获取API的 域名 、请求url、请求方法、AppKey和AppSecret等信息,具体参见认证前准备。 获取并安装Python安装包(可使用2.7.9+或3.X),如果未安装,请至Python官方下载页面下载。 Python安装完成后,在命令行中使用pip安装“requests”库。 pip install requests 如果pip安装requests遇到证书错误,请下载并使用Python执行此文件,升级pip,然后再执行以上命令安装。 获取并安装IntelliJ IDEA,如果未安装,请至IntelliJ IDEA官方网站下载。 已在IntelliJ IDEA中安装Python插件,如果未安装,请按照图1所示安装。 图1 安装Python插件
  • 调用API示例 在工程中引入apig_sdk。 1 2 3 from apig_sdk import signer import requests import os 生成一个新的Signer,填入AppKey和AppSecret。 1 2 3 4 5 6 7 8 # 认证用的ak和sk编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量SDK_AK和SDK_SK。 ak = os.environ("SDK_AK"); sk = os.environ("SDK_SK"); sig = signer.Signer() sig.Key = ak sig.Secret = sk 生成一个Request对象,指定方法名、请求uri、header和body。 1 2 3 4 r = signer.HttpRequest("POST", "https://c967a237-cd6c-470e-906f-a8655461897e.apigw.cn-north-1.huaweicloud.com/app1?a=1", {"x-stage": "RELEASE", "name": "value"}, "body") 进行签名,执行此函数会在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。然后为请求添加x-Authorization头,值与Authorization头相同。 1 2 sig.Sign(r) r.headers["x-Authorization"] = r.headers["Authorization"] 访问API,查看访问结果。 1 2 3 resp = requests.request(r.method, r.scheme + "://" + r.host + r.uri, headers=r.headers, data=r.body) print(resp.status_code, resp.reason) print(resp.content)
  • 自定义统计采集 自定义统计采集(AppEvent)是自定义统计采集器,获取自定义统计相关信息。包括:类别、指标、指标名称、指标说明、单位、数据类型以及默认聚合方式。 表1 自定义统计采集(AppEvent)指标说明 指标类别 指标 指标名称 指标说明 单位 数据类型 默认聚合方式 自定义统计指标集(Event,自定义统计指标集相关信息。) total 自定义事件总次数 自定义事件总次数 - INT SUM k 自定义事件名 自定义事件名 - STRING LAST v 最后一次事件值 最后一次事件值 - STRING LAST avgV2 内容平均事件值 内容平均事件值 - DOUBLE AVG maxV2 内容最大事件值 内容最大事件值 - DOUBLE MAX minV2 内容最小事件值 内容最小事件值 - DOUBLE MIN 父主题: App
  • 错误列表 错误列表展示错误信息的错误摘要、错误类型、错误次数、影响设备数、影响版本数、首次发生时间、最后发生时间以及操作。 图5 错误列表 表5 错误列表相关参数说明 参数名称 说明 错误摘要 错误信息的摘要。 错误类型 错误的类型。 错误次数 错误的次数。 影响设备数 错误影响设备的数量。 影响版本数 错误影响版本的次数。 首次发生时间 错误首次发生的时间。 最后发生时间 错误最后发生的时间。 单击“错误摘要”列的某一行对应的“操作”列的“分析”按钮,展示某条错误记录的详细信息。包括:错误总览趋势图、TOP5版本错误、TOP5设备错误以及错误列表。 图6 错误摘要详细信息 单击“设备型号/ID”列的某一行对应的“操作”列的“查看详情”。展示该错误记录的基本信息以及错误堆栈。 表6 错误-查看详情相关参数说明 参数名称 说明 发生时间 发生错误的时间。 用户标识 用户的唯一标识。 设备名称 设备名称。 摘要 错误信息摘要。 接入方式 App接入方式。 系统版本 系统版本号。 App版本 App版本号。 内存占用 内存占用大小。 内存空闲 内存空闲大小。 CPU使用 CPU已经使用率。 CPU架构 CPU的架构。 可用磁盘 磁盘可使用大小。 已用磁盘 磁盘已使用大小。 应用包名 应用包名称。 错误堆栈 错误堆栈。
  • 调用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());
  • 获取SDK 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载SDK的最新版本,获取“ApiGateway-csharp-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 apigateway-signature\Signer.cs SDK代码 apigateway-signature\HttpEncoder.cs sdk-request\Program.cs 签名请求示例代码 backend-signature\ 后端签名示例工程 csharp.sln 工程文件 licenses\license-referencesource 第三方库license文件
  • 调用API示例 在工程中引入sdk。 1 2 3 4 5 6 using System; using System.Net; using System.IO; using System.Net.Http; using System.Threading; using APIGATEWAY_SDK; 生成一个新的Signer, 填入AppKey和AppSecret。 本示例以AK和SK保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。以Linux系统为例在本地将已获取的AK/SK设置为环境变量。 打开终端,输入以下命令打开环境变量配置文件。 vi ~/.bashrc 设置环境变量,保存文件并退出编辑器。 export HUAWEICLOUD_SDK_AK="已获取AK值" export HUAWEICLOUD_SDK_SK="已获取SK值" 输入以下命令使配置文件生效。 source ~/.bashrc 生成一个新的Signer,填入已设置的环境变量。 1 2 3 4 5 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"); 生成一个HttpRequest对象,指定域方法名、请求url和body。 1 2 3 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头,内容为环境名。如有需要,添加需要签名的其他头域。 1 r.headers.Add("x-stage", "RELEASE"); 进行签名,执行此函数会生成一个新的HttpWebRequest,并在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。 1 HttpWebRequest req = signer.Sign(r); 访问API,查看访问结果。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 try { var writer = new StreamWriter(req.GetRequestStream()); writer.Write(r.body); writer.Flush(); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); var reader = new StreamReader(resp.GetResponseStream()); Console.WriteLine(reader.ReadToEnd()); } catch (WebException e) { HttpWebResponse resp = (HttpWebResponse)e.Response; if (resp != null) { Console.WriteLine((int)resp.StatusCode + " " + resp.StatusDescription); var reader = new StreamReader(resp.GetResponseStream()); Console.WriteLine(reader.ReadToEnd()); } else { Console.WriteLine(e.Message); } } Console.WriteLine("----------------");
  • 我的页面介绍 我的页面介绍如下: 图1 我的界面 表1 我的页面说明 功能 说明 个人信息编辑 点头像进入编辑头像和名字 个人中心 包含上传工作照、上传电子签名、我的岗位、我的技能、我的学习、我的积分、我的经历等信息(电子签名支持上传本地图片) 公司管理 可以切换租户、加入其他公司 分享注册 其他用户可以通过二维码进行注册、激活 版本升级 查看APP版本 设置 多语言 切换APP当前语言 明文显示位置地址 开关控制是否显示位置地址 启用精准定位开关 开关控制是否启用精准定位开关 账户与安全 绑定手机号修改,修改密码,账户安全中心中可注销账户(注销后无法恢复) 清除缓存 清除所有缓存与已下载数据 启用任务自动语音播报 开关控制是否启用任务自动语音播报 自定义首页 点击进入自定义首页内容页面,勾选的内容会出现在APP首页 关于 查看“应用信息、版权信息、第三方SDK列表” 退出 退出当前账号 反馈 反馈问题和建议 父主题: APP整体介绍
  • 响应示例 状态码: 201 Created { "auths" : [ { "api_id" : "5f918d104dc84480a75166ba99efff21", "auth_result" : { "status" : "SUC CES S" }, "auth_time" : "22020-08-04T04:02:22.482227344Z", "id" : "dd29b33ae4394e3b924b582c6b40880b", "app_id" : "356de8eb7a8742168586e5daf5339965", "auth_role" : "PROVIDER", "auth_tunnel" : "NORMAL" } ] } 状态码: 400 Bad Request { "error_code" : "APIG.2011", "error_msg" : "Invalid parameter value,parameterName:api_ids. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3004", "error_msg" : "App 356de8eb7a8742168586e5daf5339965 does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 auths Array of ApiAuthRelations objects API与APP的授权关系列表 表5 ApiAuthRelations 参数 参数类型 描述 api_id String API编号 auth_result AuthResult object 授权结果 auth_time String 授权时间 id String 授权关系编号 app_id String APP编号 auth_role String 授权者 PROVIDER:API提供者授权 CONSUMER:API消费者授权 枚举值: PROVIDER CONSUMER auth_tunnel String 授权通道类型 NORMAL:普通通道 GREEN:绿色通道 暂不支持,默认NORMAL 枚举值: NORMAL GREEN auth_whitelist Array of strings 绿色通道的白名单配置 auth_blacklist Array of strings 绿色通道的黑名单配置 visit_params String 访问参数。 表6 AuthResult 参数 参数类型 描述 status String 授权结果 SUCCESS:授权成功 SKIPPED:跳过 FAILED:授权失败 枚举值: SUCCESS SKIPPED FAILED error_msg String 授权失败错误信息 error_code String 授权失败错误码 api_name String 授权失败的API名称 app_name String 授权失败的APP名称 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表11 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 env_id 是 String 需要授权的环境编号 app_ids 是 Array of strings APP的编号列表 api_ids 是 Array of strings API的编号列表,可以选择租户自己的API,也可以选择从云商店上购买的API。
  • 启动性能列表 启动性能列表展示设备中App启动性能的相关信息,指标包括:设备型号/ID、总启动数、正常启动数、慢启动数、启动崩溃数、平均响应时间以及操作。 图4 启动性能列表 表4 启动性能列表相关参数说明 参数名称 说明 设备型号/ID 设备的型号或ID。 总启动数 启动的总数。 正常启动数 正常启动的次数。 慢启动数 慢启动的次数。 启动崩溃数 启动时崩溃的次数。 平均响应时间 启动的平均响应时间。 单击“设备型号/ID”列的某一行对应的“操作”列的“分析”按钮,展示某条启动性能的详细信息。包括:设备总览趋势图、调用耗时趋势图以及启动性能列表。 图5 启动性能详细信息 单击“设备型号/ID”列的某一行对应的“操作”列的“查看详情”。展示该错误记录的基本信息以及错误堆栈。 图6 性能启动-查看详情 表5 启动性能-查看详情相关参数说明 类型 参数名称 说明 - 设备 ID 设备ID。 - 用户 ID 用户ID。 - 发生时间 启动发生的时间。 启动响应分析 应用预加载耗时 启动时应用预加载的耗时。 应用加载耗时 启动时应用加载的耗时。 视图加载耗时 启动时视图加载的耗时。 其他耗时 启动时的其他耗时。 设备信息 设备机型 设备的机型。 是否越狱 设备是否越狱,例如:iOS越狱为“是”,Android root刷机为“是”,其他为“否”。 地域 设备所在地域。 uuid 每次上报的唯一标识。 网络信息 网络接入方式。 操作系统 系统 操作系统名称。 系统版本 操作系统版本。 APP包名 App包的名称。 APP版本 App的版本。 服务端接收时间 服务器端接收的时间。 SDK版本号 SDK版本号。
  • 响应示例 状态码: 200 OK { "total" : 1, "size" : 1, "auths" : [ { "id" : "dd29b33ae4394e3b924b582c6b40880b", "api_id" : "5f918d104dc84480a75166ba99efff21", "api_name" : "Api_http", "group_name" : "api_group_001", "api_type" : 1, "api_remark" : "Web backend Api", "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID", "auth_role" : "PROVIDER", "auth_time" : "2020-08-04T04:02:22Z", "app_name" : "app_demo", "app_remark" : "remark", "app_type" : "roma", "app_creator" : "USER", "publish_id" : "", "group_id" : "c77f5e81d9cb4424bf704ef2b0ac7600", "auth_tunnel" : "NORMAL", "auth_whitelist" : [ ], "auth_blacklist" : [ ], "roma_app_type" : "roma_client", "env_name" : "RELEASE", "app_id" : "356de8eb7a8742168586e5daf5339965" } ] } 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:app_name. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3002", "error_msg" : "API 5f918d104dc84480a75166ba99efff21 does not exist" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }