3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-roma”,具体的SDK版本号请参见 SDK开发中心 。
Copied!
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-core</artifactId>
<version>3.0.73</version>
</dependency>
Copied!
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-roma</artifactId>
<version>3.0.73</version>
</dependency>
Copied!
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
Copied!
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
Copied!
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
4. 开始使用
4.1 导入依赖模块
Copied!
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ClientRequestException;
import com.huaweicloud.sdk.core.exception.ServerResponseException;
import com.huaweicloud.sdk.roma.v2.RomaClient;
import com.huaweicloud.sdk.roma.v2.model.ApiGroupCreate;
import com.huaweicloud.sdk.roma.v2.model.CreateApiGroupV2Request;
import com.huaweicloud.sdk.roma.v2.model.CreateApiGroupV2Response;
import com.huaweicloud.sdk.roma.v2.model.ApiCreate;
import com.huaweicloud.sdk.roma.v2.model.BackendApiCreate;
import com.huaweicloud.sdk.roma.v2.model.CreateApiV2Request;
import com.huaweicloud.sdk.roma.v2.model.CreateApiV2Response;
import com.huaweicloud.sdk.roma.v2.model.ApiActionInfo;
import com.huaweicloud.sdk.roma.v2.model.CreateOrDeletePublishRecordForApiV2Request;
import com.huaweicloud.sdk.roma.v2.model.CreateOrDeletePublishRecordForApiV2Response;
import com.huaweicloud.sdk.roma.v2.model.AssociateDomainV2Request;
import com.huaweicloud.sdk.roma.v2.model.AssociateDomainV2Response;
import com.huaweicloud.sdk.roma.v2.model.UrlDomainCreate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
4.2 测试案例
Copied!
public class CreateAndOpenApiWithVpcBackendDemo {
private static final Logger logger = LoggerFactory.getLogger(CreateAndOpenApiWithVpcBackendDemo.class.getName());
public static void main(String[] args) {
String ak = System.getenv("HUAWEICLOUD_SDK_AK");
String sk = System.getenv("HUAWEICLOUD_SDK_SK");
String projectId = "<YOUR PROJECT ID>";
String romaEndpoint = "<ROMA ENDPOINT>";
String instanceId = "<YOUR INSTANCE ID>";
String groupName = "<YOUR API GROUP NAME>";
String apiName = "<YOUR API NAME>";
String romaAppId = "<YOU ROMA APP ID>";
BasicCredentials auth = new BasicCredentials()
.withAk(ak)
.withSk(sk)
.withProjectId(projectId);
RomaClient romaClient = RomaClient.newBuilder()
.withCredential(auth)
.withEndpoint(romaEndpoint)
.build();
String groupId = null;
try {
CreateApiGroupV2Request apiGroupRequest = new CreateApiGroupV2Request();
apiGroupRequest.setInstanceId(instanceId);
ApiGroupCreate apiGroupBody = new ApiGroupCreate();
apiGroupBody.setName(groupName);
apiGroupBody.setRomaAppId(romaAppId);
apiGroupRequest.setBody(apiGroupBody);
CreateApiGroupV2Response apiGroupResponse = romaClient.createApiGroupV2(apiGroupRequest);
groupId = apiGroupResponse.getId();
logger.info(groupId);
} catch (ClientRequestException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.toString());
} catch (ServerResponseException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.getMessage());
}
String vpcChannelId = null;
try {
CreateVpcChannelV2Request request = new CreateVpcChannelV2Request();
request.setInstanceId(instanceId);
VpcCreate body = new VpcCreate();
body.setName("<YOUR VPC CHANNEL NAME>");
body.setPort(80);
request.setBody(body);
CreateVpcChannelV2Response response = romaClient.createVpcChannelV2(request);
vpcChannelId = response.getId();
logger.info(vpcChannelId);
} catch (ClientRequestException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.toString());
} catch (ServerResponseException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.getMessage());
}
try {
AssociateDomainV2Request associateDomainRequest = new AssociateDomainV2Request();
associateDomainRequest.setInstanceId(instanceId);
associateDomainRequest.setGroupId(groupId);
UrlDomainCreate associateDomainBody = new UrlDomainCreate();
associateDomainBody.setUrlDomain("<YOUR URL DOMAIN>");
associateDomainRequest.setBody(associateDomainBody);
AssociateDomainV2Response associateDomainResponse = romaClient.associateDomainV2(associateDomainRequest);
logger.info(associateDomainResponse.toString());
} catch (ClientRequestException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.toString());
} catch (ServerResponseException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.getMessage());
}
String apiId = null;
try {
CreateApiV2Request apiRequest = new CreateApiV2Request();
apiRequest.setInstanceId(instanceId);
ApiCreate apiBody = new ApiCreate();
apiBody.setName(apiName);
apiBody.setGroupId(groupId);
apiBody.setType(ApiCreate.TypeEnum.NUMBER_1);
apiBody.setAuthType(ApiCreate.AuthTypeEnum.APP);
apiBody.setReqMethod(ApiCreate.ReqMethodEnum.GET);
apiBody.setReqProtocol(ApiCreate.ReqProtocolEnum.HTTPS);
apiBody.setReqUri("<YOUR REQUEST URI>");
apiBody.setBackendType(ApiCreate.BackendTypeEnum.HTTP);
BackendApiCreate backendApiCreate = new BackendApiCreate();
backendApiCreate.setReqMethod(BackendApiCreate.ReqMethodEnum.GET);
backendApiCreate.setReqProtocol(BackendApiCreate.ReqProtocolEnum.HTTPS);
backendApiCreate.setReqUri("<YOUR BACKEND REQUEST URI>");
backendApiCreate.setVpcChannelStatus(BackendApiCreate.VpcChannelStatusEnum.NUMBER_1);
backendApiCreate.setTimeout(30);
VpcInfo vpcInfo = new VpcInfo();
vpcInfo.setVpcChannelId(vpcChannelId);
backendApiCreate.setVpcChannelInfo(vpcInfo);
apiBody.setBackendApi(backendApiCreate);
apiRequest.setBody(apiBody);
CreateApiV2Response apiResponse = romaClient.createApiV2(apiRequest);
apiId = apiResponse.getId();
logger.info(apiId);
} catch (ClientRequestException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.toString());
} catch (ServerResponseException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.getMessage());
}
try {
CreateOrDeletePublishRecordForApiV2Request publishApiRequest = new CreateOrDeletePublishRecordForApiV2Request();
publishApiRequest.setInstanceId(instanceId);
ApiActionInfo publishApiBody = new ApiActionInfo();
publishApiBody.setApiId(apiId);
publishApiBody.setAction(ApiActionInfo.ActionEnum.ONLINE);
publishApiBody.setEnvId("DEFAULT_ENVIRONMENT_RELEASE_ID");
publishApiRequest.setBody(publishApiBody);
CreateOrDeletePublishRecordForApiV2Response publishApiResponse = romaClient.createOrDeletePublishRecordForApiV2(publishApiRequest);
logger.info(publishApiResponse.toString());
} catch (ClientRequestException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.toString());
} catch (ServerResponseException e) {
logger.error(String.valueOf(e.getHttpStatusCode()));
logger.error(e.getMessage());
}
}
}
ROMA-Connect API网关负载通道能力开放后端服务代码示例(Java版本)
0. 版本说明
本示例基于华为云SDK V3.0版本开发。
1. 简介
基于华为云 Java SDK使用API网关负载通道能力开放后端服务代码示例。其中包括:创建API分组,创建VPC通道,绑定独立域名,创建API和发布API。
2. 开发前准备
3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-roma”,具体的SDK版本号请参见 SDK开发中心 。
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>3.0.73</version> </dependency>
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-roma</artifactId> <version>3.0.73</version> </dependency>
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency>
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency>
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency>
4. 开始使用
4.1 导入依赖模块
// 用户身份认证 import com.huaweicloud.sdk.core.auth.BasicCredentials; // 请求异常类 import com.huaweicloud.sdk.core.exception.ClientRequestException; import com.huaweicloud.sdk.core.exception.ServerResponseException; // 导入roma的客户端 import com.huaweicloud.sdk.roma.v2.RomaClient; // 导入创建API分组的请求和响应类 import com.huaweicloud.sdk.roma.v2.model.ApiGroupCreate; import com.huaweicloud.sdk.roma.v2.model.CreateApiGroupV2Request; import com.huaweicloud.sdk.roma.v2.model.CreateApiGroupV2Response; //导入创建API的请求和响应类 import com.huaweicloud.sdk.roma.v2.model.ApiCreate; import com.huaweicloud.sdk.roma.v2.model.BackendApiCreate; import com.huaweicloud.sdk.roma.v2.model.CreateApiV2Request; import com.huaweicloud.sdk.roma.v2.model.CreateApiV2Response; //导入发布API的请求和响应类 import com.huaweicloud.sdk.roma.v2.model.ApiActionInfo; import com.huaweicloud.sdk.roma.v2.model.CreateOrDeletePublishRecordForApiV2Request; import com.huaweicloud.sdk.roma.v2.model.CreateOrDeletePublishRecordForApiV2Response; //导入绑定独立域名的请求和响应类 import com.huaweicloud.sdk.roma.v2.model.AssociateDomainV2Request; import com.huaweicloud.sdk.roma.v2.model.AssociateDomainV2Response; import com.huaweicloud.sdk.roma.v2.model.UrlDomainCreate; // 日志打印 import org.slf4j.Logger; import org.slf4j.LoggerFactory;
4.2 测试案例
public class CreateAndOpenApiWithVpcBackendDemo { private static final Logger logger = LoggerFactory.getLogger(CreateAndOpenApiWithVpcBackendDemo.class.getName()); public static void main(String[] args) { /* * 初始化认证信息,相关参数说明如下所示: * - ak:华为云账号Access Key。 * - sk:华为云账号Secret Access Key 。 */ // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份认证为例,运行示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); String projectId = "<YOUR PROJECT ID>"; String romaEndpoint = "<ROMA ENDPOINT>"; String instanceId = "<YOUR INSTANCE ID>"; String groupName = "<YOUR API GROUP NAME>"; String apiName = "<YOUR API NAME>"; String romaAppId = "<YOU ROMA APP ID>"; // 初始化认证信息 BasicCredentials auth = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); // 初始化RomaClient客户端 RomaClient romaClient = RomaClient.newBuilder() .withCredential(auth) .withEndpoint(romaEndpoint) .build(); // 创建API分组 String groupId = null; try { // 构造请求参数 CreateApiGroupV2Request apiGroupRequest = new CreateApiGroupV2Request(); apiGroupRequest.setInstanceId(instanceId); ApiGroupCreate apiGroupBody = new ApiGroupCreate(); apiGroupBody.setName(groupName); apiGroupBody.setRomaAppId(romaAppId); apiGroupRequest.setBody(apiGroupBody); // 接收响应参数 CreateApiGroupV2Response apiGroupResponse = romaClient.createApiGroupV2(apiGroupRequest); groupId = apiGroupResponse.getId(); logger.info(groupId); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } // 创建VPC通道 String vpcChannelId = null; try { // 构造请求参数 CreateVpcChannelV2Request request = new CreateVpcChannelV2Request(); request.setInstanceId(instanceId); VpcCreate body = new VpcCreate(); body.setName("<YOUR VPC CHANNEL NAME>"); body.setPort(80); request.setBody(body); // 接收响应参数 CreateVpcChannelV2Response response = romaClient.createVpcChannelV2(request); vpcChannelId = response.getId(); logger.info(vpcChannelId); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } // 绑定域名 try { // 构造请求参数 AssociateDomainV2Request associateDomainRequest = new AssociateDomainV2Request(); associateDomainRequest.setInstanceId(instanceId); associateDomainRequest.setGroupId(groupId); UrlDomainCreate associateDomainBody = new UrlDomainCreate(); associateDomainBody.setUrlDomain("<YOUR URL DOMAIN>"); associateDomainRequest.setBody(associateDomainBody); // 接收响应参数 AssociateDomainV2Response associateDomainResponse = romaClient.associateDomainV2(associateDomainRequest); logger.info(associateDomainResponse.toString()); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } // 创建API String apiId = null; try { // 构造请求参数 CreateApiV2Request apiRequest = new CreateApiV2Request(); apiRequest.setInstanceId(instanceId); ApiCreate apiBody = new ApiCreate(); apiBody.setName(apiName); apiBody.setGroupId(groupId); apiBody.setType(ApiCreate.TypeEnum.NUMBER_1); apiBody.setAuthType(ApiCreate.AuthTypeEnum.APP); apiBody.setReqMethod(ApiCreate.ReqMethodEnum.GET); apiBody.setReqProtocol(ApiCreate.ReqProtocolEnum.HTTPS); apiBody.setReqUri("<YOUR REQUEST URI>"); apiBody.setBackendType(ApiCreate.BackendTypeEnum.HTTP); BackendApiCreate backendApiCreate = new BackendApiCreate(); backendApiCreate.setReqMethod(BackendApiCreate.ReqMethodEnum.GET); backendApiCreate.setReqProtocol(BackendApiCreate.ReqProtocolEnum.HTTPS); backendApiCreate.setReqUri("<YOUR BACKEND REQUEST URI>"); backendApiCreate.setVpcChannelStatus(BackendApiCreate.VpcChannelStatusEnum.NUMBER_1); backendApiCreate.setTimeout(30); VpcInfo vpcInfo = new VpcInfo(); vpcInfo.setVpcChannelId(vpcChannelId); backendApiCreate.setVpcChannelInfo(vpcInfo); apiBody.setBackendApi(backendApiCreate); apiRequest.setBody(apiBody); // 接收响应参数 CreateApiV2Response apiResponse = romaClient.createApiV2(apiRequest); apiId = apiResponse.getId(); logger.info(apiId); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } // 发布API try { // 构造请求参数 CreateOrDeletePublishRecordForApiV2Request publishApiRequest = new CreateOrDeletePublishRecordForApiV2Request(); publishApiRequest.setInstanceId(instanceId); ApiActionInfo publishApiBody = new ApiActionInfo(); publishApiBody.setApiId(apiId); publishApiBody.setAction(ApiActionInfo.ActionEnum.ONLINE); publishApiBody.setEnvId("DEFAULT_ENVIRONMENT_RELEASE_ID"); publishApiRequest.setBody(publishApiBody); // 接收响应参数 CreateOrDeletePublishRecordForApiV2Response publishApiResponse = romaClient.createOrDeletePublishRecordForApiV2(publishApiRequest); logger.info(publishApiResponse.toString()); } catch (ClientRequestException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.toString()); } catch (ServerResponseException e) { logger.error(String.valueOf(e.getHttpStatusCode())); logger.error(e.getMessage()); } } }
5. FAQ
暂无
6. 参考
更多信息请参考 ROMA-Connect网关服务文档
7. 修订记录