API网关 APIG
API网关 APIG
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- APIG业务使用流程
- 创建用户并授权使用APIG
- 创建APIG实例
- 开放API
- 配置API调用授权(可选)
- 调用API
-
管理API
- 管理API概述
- 查看或编辑APIG的API信息
- 配置API的自定义认证
- 配置API的参数编排规则
- 自定义API的错误响应信息
- 克隆APIG的API
- 下线APIG的API
- 导入导出API
-
APIG的API设计文件扩展定义
- x-apigateway-auth-type
- x-apigateway-request-type
- x-apigateway-match-mode
- x-apigateway-cors
- x-apigateway-is-send-fg-body-base64
- x-apigateway-any-method
- x-apigateway-backend
- x-apigateway-backend.parameters
- x-apigateway-backend.httpEndpoints
- x-apigateway-backend.httpVpcEndpoints
- x-apigateway-backend.functionEndpoints
- x-apigateway-backend.mockEndpoints
- x-apigateway-backend-policies
- x-apigateway-backend-policies.conditions
- x-apigateway-ratelimit
- x-apigateway-ratelimits
- x-apigateway-ratelimits.policy
- x-apigateway-ratelimits.policy.special
- x-apigateway-access-control
- x-apigateway-access-controls
- x-apigateway-access-controls.policy
- x-apigateway-plugins
- x-apigateway-auth-opt
- x-apigateway-result-normal-sample
- x-apigateway-result-failure-sample
- x-apigateway-authorizer
- x-apigateway-response
- x-apigateway-responses
- x-apigateway-pass-through
- x-apigateway-sample
- x-apigateway-content-type
- x-apigateway-orchestrations
- 配置API策略
- 配置凭据策略
- 管理APIG实例
- 查看监控指标与配置告警
- 查看APIG审计日志
- 共享版操作指导(仅存量用户使用)
- 最佳实践
- 开发指南
-
API参考
- 使用前必读
- API概览
- 如何调用API
-
专享版API(V2)
- 专享版-API分组管理
- 专享版-环境管理
- 专享版-环境变量管理
- 专享版-流控策略管理
- 专享版-API管理
- 专享版-签名密钥管理
- 专享版-签名密钥绑定关系管理
- 专享版-API绑定流控策略
- 专享版-设置特殊流控
- 专享版-APP授权管理
- 专享版-概要查询
- 专享版-域名管理
- 专享版-ACL策略管理
- 专享版-API绑定ACL策略
- 专享版-自定义认证管理
- 专享版-OpenAPI接口
- 专享版-VPC通道管理
- 专享版-监控信息查询
- 专享版-分组自定义响应管理
- 专享版-标签管理
- 专享版-实例特性管理
- 专享版-配置管理
- 专享版-实例管理
- 专享版-实例终端节点管理
- 专享版-实例标签管理
- 专享版-微服务中心管理
- 专享版-SSL证书管理
- 专享版-插件管理
- 专享版-凭据管理
- 专享版-凭据配额管理
- 专享版-异步任务管理
- 专享版-编排规则管理
- 专享版-实例自定义入方向端口管理
- 共享版API(仅存量用户使用)
- 权限策略和授权项
- 附录
- 修订记录
- SDK参考
-
常见问题
- 热门咨询
- 产品咨询
- 开放API
- 发布API
-
调用API
- 调用API失败的可能原因
- 调用API报“414 Request URI too large”
- 调用API报“The API does not exist or has not been published in the environment”
- 调用API报“No backend available”
- API的后端服务报“Backend unavailable”或“Backend timeout”
- API的后端服务报“Backend domain name resolution failed”
- 调用API报“Incorrect IAM authentication information”
- 调用API报“Incorrect app authentication information”
- 修改API后端服务的超时时间上限“backend_timeout”后未生效
- APIG对API请求体的大小是否有限制?
- API调用对请求的响应消息体限制
- 使用iOS系统时,如何使用APP认证调用API?
- 新建一个华为IAM认证方式的API,在配置入参时为什么无法配置HEADER位置的x-auth-token?
- 是否支持移动应用调用API?
- 部署在VPC下的应用是否可以调用API?
- APIG是否支持WebSocket数据传输?
- API的策略后端有多个时,怎么匹配和执行API请求?
- 如何通过APIG访问公网后端服务?
- API认证
- API策略
- 导入导出API
-
更多文档
-
用户指南(吉隆坡区域)
- 产品介绍
- 快速入门
- 新旧版本差异
- 总览
-
API管理
- 创建API分组
- 绑定域名
- 创建环境变量
- 新增网关响应
- 创建API
- 克隆API
- 开启跨域访问
- 调试API
- 授权API
- 发布API
- 下线API
-
导入导出API
- 限制与兼容性说明
- 导入API
- 导出API
-
扩展定义
- x-apigateway-auth-type
- x-apigateway-request-type
- x-apigateway-match-mode
- x-apigateway-cors
- x-apigateway-any-method
- x-apigateway-backend
- x-apigateway-backend.parameters
- x-apigateway-backend.httpEndpoints
- x-apigateway-backend.httpVpcEndpoints
- x-apigateway-backend.functionEndpoints
- x-apigateway-backend.mockEndpoints
- x-apigateway-backend-policies
- x-apigateway-backend-policies.conditions
- x-apigateway-ratelimit
- x-apigateway-ratelimits
- x-apigateway-ratelimits.policy
- x-apigateway-ratelimits.policy.special
- x-apigateway-access-control
- x-apigateway-access-controls
- x-apigateway-access-controls.policy
- x-apigateway-plugins
- 查看API列表
- 支持HTTP2.0
- API策略
- 凭据管理
- 监控分析
- 实例管理
- SDK
- 调用已发布的API
- 权限管理
- 云审计服务支持的关键操作
-
常见问题
- 热门咨询
- API创建
-
API调用
- API调用失败的可能原因有哪些?
- API调用返回错误码如何处理?
- API调用报错“414 Request URI too large”
- "The API does not exist or has not been published in the environment."如何解决?
- No backend available,怎么解决?
- 后端服务调用失败“Backend unavailable”或超时“Backend timeout”原因分析
- 后端服务调用报错域名无法解析“Backend domain name resolution failed”
- 修改后端服务的超时时间上限“backend_timeout”后未生效
- 如何切换调用环境?
- 调用请求包最大支持多少?
- 使用iOS系统时,如何进行APP认证?
- 新建一个IAM认证方式的API,在配置入参时为什么无法配置HEADER位置的x-auth-token?
- 应用(凭据)问题汇总
- 是否支持移动应用调用API?
- 部署在VPC下的应用是否可以调用API?
- API网关是否支持WebSocket数据传输?
- API调用是否支持长连接
- 策略后端有多个时,怎么匹配和执行
- API调用对请求的响应消息体限制
- 如何通过APIG访问公网后端服务
- API认证鉴权
- API控制策略
- API发布
- API导入导出
- API安全
- 其他
- 修订记录
- 开发指南(吉隆坡区域)
-
API参考(吉隆坡区域)
- 使用前必读
- 如何调用API
-
专享版API(V2)
- 专享版-API分组管理
- 专享版-环境管理
- 专享版-环境变量管理
- 专享版-流控策略管理
- 专享版-API管理
- 专享版-签名密钥管理
- 专享版-签名密钥绑定关系管理
- 专享版-API绑定流控策略
- 专享版-设置特殊流控
- 专享版-APP授权管理
- 专享版-概要查询
- 专享版-域名管理
- 专享版-ACL策略管理
- 专享版-API绑定ACL策略
- 专享版-自定义认证管理
- 专享版-OpenAPI接口
- 专享版-VPC通道管理
- 专享版-监控信息查询
- 专享版-分组自定义响应管理
- 专享版-标签管理
- 专享版-实例特性管理
- 专享版-配置管理
- 专享版-实例管理
- 专享版-实例终端节点管理
- 专享版-实例标签管理
- 专享版-SSL证书管理
- 专享版-插件管理
- 专享版-凭据管理
- 专享版-凭据配额管理
- 专享版-异步任务管理
- 权限策略和授权项
- 附录
- 修订记录
-
用户指南(阿布扎比区域)
- 产品介绍
- 快速入门
- 新旧版本差异
- 总览
-
API管理
- 创建API分组
- 导入CCE工作负载
- 绑定域名
- 创建环境变量
- 新增网关响应
- 创建API
- 创建GRPC API
- 克隆API
- 开启跨域访问
- 调试API
- 授权API
- 发布API
- 下线API
-
导入导出API
- 限制与兼容性说明
- 导入API
- 导出API
-
扩展定义
- x-apigateway-auth-type
- x-apigateway-request-type
- x-apigateway-match-mode
- x-apigateway-cors
- x-apigateway-is-send-fg-body-base64
- x-apigateway-any-method
- x-apigateway-backend
- x-apigateway-backend.parameters
- x-apigateway-backend.httpEndpoints
- x-apigateway-backend.httpVpcEndpoints
- x-apigateway-backend.functionEndpoints
- x-apigateway-backend.mockEndpoints
- x-apigateway-backend-policies
- x-apigateway-backend-policies.conditions
- x-apigateway-ratelimit
- x-apigateway-ratelimits
- x-apigateway-ratelimits.policy
- x-apigateway-ratelimits.policy.special
- x-apigateway-access-control
- x-apigateway-access-controls
- x-apigateway-access-controls.policy
- x-apigateway-plugins
- 查看API列表
- 支持HTTP2.0
- API策略
- 凭据管理
- 监控分析
- 实例管理
- SDK
- 调用已发布的API
- 权限管理
- 云审计服务支持的关键操作
-
常见问题
- 热门咨询
- API创建
-
API调用
- API调用失败的可能原因有哪些?
- API调用返回错误码如何处理?
- API调用报错“414 Request URI too large”
- "The API does not exist or has not been published in the environment."如何解决?
- No backend available,怎么解决?
- 后端服务调用失败“Backend unavailable”或超时“Backend timeout”原因分析
- 后端服务调用报错域名无法解析“Backend domain name resolution failed”
- 修改后端服务的超时时间上限“backend_timeout”后未生效
- 如何切换调用环境?
- 调用请求包最大支持多少?
- 使用iOS系统时,如何进行APP认证?
- 新建一个IAM认证方式的API,在配置入参时为什么无法配置HEADER位置的x-auth-token?
- 应用(凭据)问题汇总
- 是否支持移动应用调用API?
- 部署在VPC下的应用是否可以调用API?
- API网关是否支持WebSocket数据传输?
- API调用是否支持长连接
- 策略后端有多个时,怎么匹配和执行
- API调用对请求的响应消息体限制
- 如何通过APIG访问公网后端服务
- API认证鉴权
- API控制策略
- API发布
- API导入导出
- API安全
- 其他
- 修订记录
- 开发指南(阿布扎比区域)
-
API参考(阿布扎比区域)
- 使用前必读
- 如何调用API
-
专享版API(V2)
- 专享版-API分组管理
- 专享版-环境管理
- 专享版-环境变量管理
- 专享版-流控策略管理
- 专享版-API管理
- 专享版-签名密钥管理
- 专享版-签名密钥绑定关系管理
- 专享版-API绑定流控策略
- 专享版-设置特殊流控
- 专享版-APP授权管理
- 专享版-概要查询
- 专享版-域名管理
- 专享版-ACL策略管理
- 专享版-API绑定ACL策略
- 专享版-自定义认证管理
- 专享版-OpenAPI接口
- 专享版-VPC通道管理
- 专享版-监控信息查询
- 专享版-分组自定义响应管理
- 专享版-标签管理
- 专享版-实例特性管理
- 专享版-配置管理
- 专享版-实例管理
- 专享版-实例终端节点管理
- 专享版-实例标签管理
- 专享版-微服务中心管理
- 专享版-SSL证书管理
- 专享版-插件管理
- 专享版-凭据管理
- 专享版-凭据配额管理
- 专享版-异步任务管理
- 权限策略和授权项
- 附录
- 修订记录
- 最佳实践(阿布扎比区域)
- 用户指南(巴黎区域)
- 开发指南(巴黎区域)
- API参考(巴黎区域)
-
用户指南专享版(巴黎区域)
- 产品介绍
- 快速入门
- 新旧版本差异
- 总览
-
API管理
- 创建API分组
- 绑定域名
- 创建环境变量
- 新增网关响应
- 创建API
- 开启跨域访问
- 调试API
- 授权API
- 发布API
- 下线API
-
导入导出API
- 限制与兼容性说明
- 导入API
- 导出API
-
扩展定义
- x-apigateway-auth-type
- x-apigateway-request-type
- x-apigateway-match-mode
- x-apigateway-cors
- x-apigateway-any-method
- x-apigateway-backend
- x-apigateway-backend.parameters
- x-apigateway-backend.httpEndpoints
- x-apigateway-backend.httpVpcEndpoints
- x-apigateway-backend.functionEndpoints
- x-apigateway-backend.mockEndpoints
- x-apigateway-backend-policies
- x-apigateway-backend-policies.conditions
- x-apigateway-ratelimit
- x-apigateway-ratelimits
- x-apigateway-ratelimits.policy
- x-apigateway-ratelimits.policy.special
- x-apigateway-access-control
- x-apigateway-access-controls
- x-apigateway-access-controls.policy
- x-apigateway-plugins
- 查看API列表
- API策略
- 凭据管理
- 监控分析
- 实例管理
- 调用已发布的API
- 权限管理
- 云审计服务支持的关键操作
-
常见问题
- 热门咨询
- API创建
-
API调用
- API调用失败的可能原因有哪些?
- API调用返回错误码如何处理?
- API调用报错“414 Request URI too large”
- "The API does not exist or has not been published in the environment."如何解决?
- No backend available,怎么解决?
- 后端服务调用失败“Backend unavailable”或超时“Backend timeout”原因分析
- 后端服务调用报错域名无法解析“Backend domain name resolution failed”
- 修改后端服务的超时时间上限“backend_timeout”后未生效
- 如何切换调用环境?
- 调用请求包最大支持多少?
- 使用iOS系统时,如何进行APP认证?
- 新建一个IAM认证方式的API,在配置入参时为什么无法配置HEADER位置的x-auth-token?
- 应用(凭据)问题汇总
- 是否支持移动应用调用API?
- 部署在VPC下的应用是否可以调用API?
- API网关是否支持WebSocket数据传输?
- API调用是否支持长连接
- 策略后端有多个时,怎么匹配和执行
- API调用对请求的响应消息体限制
- 如何通过APIG访问公网后端服务
- API认证鉴权
- API控制策略
- API发布
- API导入导出
- API安全
- 其他
- 修订记录
- 开发指南专享版(巴黎区域)
-
API参考专享版 (巴黎区域)
- 使用前必读
- 如何调用API
- 专享版API(V2)
- 权限策略和授权项
- 附录
- 修订记录
-
用户指南(吉隆坡区域)
- 通用参考
链接复制成功!
Java
操作场景
使用Java语言调用APP认证的API时,您需要先获取SDK,然后新建工程或导入工程,最后参考调用API示例调用API。
本章节以Eclipse 4.5.2版本为例介绍。
图1 调用流程

前提条件
- 已获取API调用信息,具体参见认证前准备。
- 已安装Eclipse 3.6.0或以上版本,如果未安装,请至Eclipse官方网站下载。
- 已安装Java Development Kit 1.8.111或以上版本,如果未安装,请至Oracle官方下载页面下载。暂不支持Java Development Kit 17或以上版本。
获取SDK
请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。
获取“ApiGateway-java-sdk.zip”压缩包,解压后目录结构如下:
名称 |
说明 |
---|---|
libs\ |
SDK依赖库 |
libs\java-sdk-core-x.x.x.jar |
SDK包 |
src\com\apig\sdk\demo\Main.java |
使用SDK签名请求示例代码 |
src\com\apig\sdk\demo\OkHttpDemo.java |
|
src\com\apig\sdk\demo\LargeFileUploadDemo.java |
|
.classpath |
Java工程配置文件 |
.project |
导入工程
- 打开Eclipse,在菜单栏选择“File > Import”。
弹出“Import”对话框。
- 选择“General > Existing Projects into Workspace”,单击“Next”。
弹出“Import Projects”对话框。
图2 Import - 单击“Browse”,在弹出的对话框中选择解压后的SDK路径。
图3 选择demo工程
- 单击“Finish”,完成工程导入。
“Main.java”为示例代码,请根据实际情况修改参数后使用。具体代码说明请参考调用API示例。
新建工程
- 打开Eclipse,在菜单栏选择“File > New > Java Project”。
弹出“New Java Project”对话框。
- 自定义“Project name”,以“java-sdk-demo”为例,其他参数保持默认,单击“Finish”。
图4 新建工程
- 导入API Gateway Java SDK的“jar”文件。
- 选择“java-sdk-demo”,单击鼠标右键,选择“Build Path > Add External Archives”。
图5 导入jar文件
- 选择SDK中“\libs”目录下所有以“jar”结尾的文件,单击“打开”。
图6 选择jar文件
- 选择“java-sdk-demo”,单击鼠标右键,选择“Build Path > Add External Archives”。
- 新建“Package”及“Main”文件。
- 完成工程创建后,最终目录结构如下。
图11 新建工程Main的目录结构
“Main.java”无法直接使用,请根据实际情况参考下文调用API示例输入所需代码。
调用API示例
- 您需要在控制台创建一个API,可以选择Mock模式,并发布到环境上。创建及发布API的步骤请参见《API网关用户指南》。
- 示例API的后端为打桩的HTTP服务,此后端返回一个“200”响应码及“Congratulations, sdk demo is running”消息体。
- 在“Main.java”中加入以下引用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
import java.io.IOException; import javax.net.ssl.SSLContext; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.conn.ssl.AllowAllHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.SSLContexts; import org.apache.http.conn.ssl.TrustSelfSignedStrategy; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import com.cloud.apigateway.sdk.utils.Client; import com.cloud.apigateway.sdk.utils.Request;
- 创建request,过程中需要用到如下参数。
- AppKey:通过认证前准备获取。根据实际情况填写,示例代码使用“4f5f****100c”作为样例。
- AppSecret:通过认证前准备获取。根据实际情况填写,示例代码使用“******”作为样例。
- Method:请求的方法名。根据API实际情况填写,示例代码使用“POST”作为样例。
- url:请求的url,不包含QueryString及fragment部分。域名部分请使用绑定的域名,您自己绑定的独立域名。示例代码使用“http://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/java-sdk”作为样例。
- queryString: url携带参数的部分,根据API实际情况填写。支持的字符集为[0-9a-zA-Z./;[]\-=~#%^&_+: "]。示例代码使用“name=value”作为样例。
- header:请求的头域,根据API实际情况填写。示例代码使用“Content-Type:text/plain”作为样例。如果API发布到非RELEASE环境时,需要增加自定义的环境名称,示例代码使用“x-stage:publish_env_name”作为样例。
- body:请求的正文。根据API实际情况填写,示例代码使用“demo”作为样例。
样例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Request request = new Request(); try { request.setKey("4f5f****100c"); //创建应用时得到 request.setSecret("*****"); //创建应用时得到 request.setMethod("POST"); request.setUrl("http://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/java-sdk"); //url地址 request.addQueryStringParam("name", "value"); request.addHeader("Content-Type", "text/plain"); //request.addHeader("x-stage", "publish_env_name"); //如果API发布到非RELEASE环境,需要增加自定义的环境名称 request.setBody("demo"); } catch (Exception e) { e.printStackTrace(); return; }
- 对请求进行签名、访问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 25 26 27 28 29 30 31 32 33 34 35
CloseableHttpClient client = null; try { HttpRequestBase signedRequest = Client.sign(request); client = HttpClients.custom().build(); HttpResponse response = client.execute(signedRequest); System.out.println(response.getStatusLine().toString()); Header[] resHeaders = response.getAllHeaders(); for (Header h : resHeaders) { System.out.println(h.getName() + ":" + h.getValue()); } HttpEntity resEntity = response.getEntity(); if (resEntity != null) { System.out.println(System.getProperty("line.separator") + EntityUtils.toString(resEntity, "UTF-8")); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (client != null) { client.close(); } } catch (IOException e) { e.printStackTrace(); } }
- 选择“Main.java”,单击鼠标右键,选择“Run As > Java Application”,运行工程测试代码。
图12 运行工程测试代码
- 在“Console”页签,查看运行结果。
图13 调用成功后的返回信息
父主题: 使用APP认证调用API