HRPC 服务仅适用于 专有云。快速开始指导您注册并发布一个供移动端调用的 HRPC 类型的 API 服务。整体过程分为六步:
服务端开发
引入网关二方包
在项目的主 pom.xml
文件中引入如下二方包(如原工程已经有依赖,请忽略)。mobilegw-unify
系列依赖请使用最新版本,当前最新版本为 1.0.5.20200930
。
<!-- mobilegw unify dependency-->
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-spi-hrpc</artifactId>
<version>${the-lastest-version}</version>
</dependency>
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-spi-adapter</artifactId>
<version>${the-lastest-version}</version>
</dependency>
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-log</artifactId>
<version>${the-lastest-version}</version>
</dependency>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>hessian</artifactId>
<version>3.3.6</version>
</dependency>
<dependency>
<groupId>com.alipay.hybirdpb</groupId>
<artifactId>classparser</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.69_noneautotype</version>
</dependency>
<!-- 如果使用了pb,请加入如下依赖-->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>1.3.8.20160722</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>1.3.8.20160722</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-api</artifactId>
<version>1.3.8.20160722</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-collectionschema</artifactId>
<version>1.3.8.20160722</version>
</dependency>
定义服务接口并实现接口
-
按照业务需求,定义服务接口:
com.alipay.xxxx.MockRpc
。说明:- 建议将方法定义中的入参定义为 VO,这样后期可以直接在 VO 中添加参数,而不改变方法的声明格式。
- 服务接口定义的相关规范,请参见 业务接口定义规范。
-
提供该接口的实现
com.alipay.xxxx.MockRpcImpl
。
定义 OperationType
在服务接口的方法上添加 @OperationType
注解,定义发布服务的接口名称。@OperationType
有三个参数成员,为便于维护,请填写完整:
- value:接口唯一标识,在网关全局唯一。定义规则:
组织.产品域.产品.子产品.操作
。定义该参数值时应尽量详细,否则一旦与其他业务方的 value 值重复,会导致无法注册服务。 - name:接口名称。
- desc:接口描述。
示例如下:
public interface MockRpc {
@OperationType(value="com.alipay.mock", name="HRPC mock 接口", desc="复杂 mock 接口")
Resp mock(Req s);
@OperationType(value="com.alipay.mock2",name="xxx", desc="xxx")
String mock2(String s);
}
public static class Resp {
private String msg;
private int code;
// ignore getter & setter
}
public static class Req {
private String name;
private int age;
// ignore getter & setter
}
声明 API 服务
该步骤目的是将定义好的 RPC 服务,通过网关提供的 SPI
包,声明为对外提供服务的 API。需要如下三个参数:
- registryUrl:必填,注册中心的地址。
- appName:必填,业务方的应用名。
- serverPort:选填,HRPC 服务监听端口,默认为 7079。
您可以通过 Spring
或 Spring Boot
方式声明 API 服务。
Spring 声明方式
-
在对应 bundle 的 Spring 配置文件中,声明上述服务的 Spring Bean。示例如下:
<bean id="mockRpc" class="com.alipay.gateway.spi.hrpc.test.MockRpcImpl"/>
-
在对应 bundle 的 Spring 配置文件中,声明
com.alipay.gateway.spi.hrpc.HRpcServiceStarter
类型的 Spring Bean。HRpcServiceStarter
会将所有带有@OperationType
的 bean 通过 HRPC 协议注册到指定的注册中心。示例如下:<bean id="hrpcServiceStarter" class="com.alipay.gateway.spi.hrpc.HRpcServiceStarter">
<property name="registryUrl" value="${registry_url}"/>
<property name="appName" value="${app_name}"/>
<property name="serverPort" value="${serverPort可选,默认为 7079}"/>
</bean>
Spring Boot 声明方式
-
以注解的方式声明上述服务的 Spring Bean。示例如下:
@Service
public class MockRpcImpl implements MockRpc{
}
- 以注解的方式声明
com.alipay.gateway.spi.hrpc.HRpcServiceStarter
类型的 Spring Bean。HRpcServiceStarter
会将所有带有@OperationType
的 bean 通过 HRPC 协议注册到指定的注册中心。示例如下:@Configuration
public class HRpcDemo {
@Bean(name="hrpcServiceStarter")
public HRpcServiceStarter hrpcServiceStarter(){
HRpcServiceStarter hRpcServiceStarter = new HRpcServiceStarter();
hRpcServiceStarter.setAppName("${app_name}");
hRpcServiceStarter.setRegistryUrl("${registry_url}");
hRpcServiceStarter.setServerPort("${serverPort可选}");
return hRpcServiceStarter;
}
}
注册 API 分组
只有先注册了 API 分组,在后续创建完 API 并对其进行配置时,才可在 接入系统 中选择已创建的 API 分组。
-
进入移动网关管理页面。
- 登录控制台,在 产品与服务 中选择 移动开发平台 mPaaS 进入移动开发平台主页。
- 切换至正确的工作空间后,单击需要接入 API 服务的 App 名称。
- 在左侧导航栏选择 移动网关,进入移动网关管理页面。
-
选择 API 分组 选项卡进入 API 分组列表页,单击 创建 API 分组 按钮。
-
在弹出的对话框中填写表单信息。
- 分组类型:此处选择 HRPC。
- API 分组:必填,提供服务的业务系统的名称,由字母或下划线开头,只支持字母、数字、下划线以及连字符。
- 注册中心:必填,注册中心 URL。
- 超时时间:选填,发送请求至业务系统时的超时时间,单位毫秒,默认值为 3000 ms。
-
单击 确定 按钮提交。
如需进一步完善 API 分组相关配置,请阅读 配置分组。
注册 API 服务
-
选择 API 管理 选项卡进入 API 列表页,单击 创建 API 按钮。
-
在弹出的对话框中,API 类型 选择 HRPC,选择 API 分组,在拉取到的
operationType
列表中勾选需要的服务,单击 确认 按钮。
配置 API 服务
- 单击 API 列表操作列中的 配置,进入 API 配置页面。
-
在 API 配置区域,单击 修改 按钮进行相应参数的编辑;修改完成后,单击 保存 按钮。
-
检查右上方开关,保证 API 服务处于 开通 状态。只有处于开通状态的 API 服务才能被调用。
测试 API 服务
相关信息请参见 API 测试。
生成客户端 SDK
相关信息请参见 代码生成。
结果
完成上述几步操作,API 服务即可供客户端调用。有关客户端开发的更多信息,参见下列客户端开发指南: