TR 是蚂蚁金服 RPC 框架,仅适用于 专有云。快速开始指导您注册并发布一个供移动端调用的 TR 类型的 API 服务。整体过程分为六步:
服务端开发
引入网关二方包
在项目的主 pom.xml
文件中引入如下二方包(如原工程已经有依赖,请忽略)。mobilegw-unify
系列依赖请使用最新版本,当前最新版本为 1.0.5.20200930
。
<!-- mobilegw unify dependency-->
<dependency>
<groupId>com.alipay.gateway</groupId>
<artifactId>mobilegw-unify-spi-sofa</artifactId>
<version>${the-lastest-version}</version>
<exclusions>
<exclusion>
<groupId>hessian</groupId>
<artifactId>hessian</artifactId>
</exclusion>
</exclusions>
</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.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>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>hessian</artifactId>
<version>3.3.6</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
有 3 个参数成员,为便于维护,请填写完整:
- value:接口唯一标识,在网关全局唯一。定义规则:
组织.产品域.产品.子产品.操作
。定义该参数值时应尽量详细,否则一旦与其他业务方的 value 值重复,会导致无法注册服务。 - name:接口中文名称。
- desc:接口描述。
示例如下:
public interface MockRpc {
@OperationType(value="com.alipay.mock", name="MPC 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。需要填写参数 appName,参数值为业务方的应用名。
您可以通过 Spring
或 Spring Boot
方式声明 API 服务。
Spring 声明方式
-
在对应 bundle 的 Spring 配置文件中,声明上述服务的 Spring Bean。示例如下:
<bean id="mockRpc" class="com.alipay.gateway.spi.mpc.test.MockRpcImpl"/>
-
在对应 bundle 的 Spring 配置文件中,声明
com.alipay.gateway.spi.sofa.SofaServiceStarter
类型的 Spring Bean。SofaServiceStarter
会将所有带有@OperationType
的 bean 通过 TR 协议暴露给网关调用。示例如下:<bean id="sofaServiceStarter" class="com.alipay.gateway.spi.sofa.SofaServiceStarter">
<property name="appName" value="${app_name}"/>
</bean>
Spring Boot 声明方式
-
以注解的方式声明上述服务的 Spring Bean。示例如下:
@Service
public class MockRpcImpl implements MockRpc{
}
-
以注解的方式声明
com.alipay.gateway.spi.sofa.SofaServiceStarter
类型的 Spring Bean。SofaServiceStarter
会将所有带有@OperationType
的 bean 通过 TR 协议暴露给网关调用。示例如下:@Configuration
public class TRDemo {
@Bean(name="sofaServiceStarter")
public SofaServiceStarter sofaServiceStarter(){
SofaServiceStarter sofaServiceStarter = new SofaServiceStarter();
sofaServiceStarter.setAppName("${app_name}");
return sofaServiceStarter;
}
}
注册 API 分组
-
进入移动网关管理页面。
- 登录控制台,在 产品与服务 中选择 移动开发平台 mPaaS 进入移动开发平台主页。
- 切换至正确的工作空间后,点击需要接入 API 服务的 APP 名称。
- 在左侧导航栏选择 移动网关,进入移动网关管理页面。
-
选择 API 分组 选项卡进入 API 分组列表页,点击 添加 API 分组 按钮。
-
在弹出的对话框中填写表单信息。
- 分组类型:此处选择 TR。
- API 分组:必填,提供服务的业务系统的英文名称。
- 直连地址:选填,需要直连时填写。由 IP 和端口组成,端口不指定时默认为
12200
。 - 超时时间:选填,发送请求至业务系统时的超时时间,单位毫秒,默认值为 3000 ms。
-
点击 确定 按钮提交。
如需进一步完善 API 分组相关配置,请阅读 配置分组。
注册 API 服务
-
选择 API 管理 选项卡进入 API 列表页,点击 添加 API 按钮。
-
在弹出的对话框中,API 类型 选择
TR
,选择 API 分组,在拉取到的operationType
列表中勾选需要的服务,点击 确认 按钮。
配置 API 服务
- 点击 API 列表操作列中的 配置,进入 API 配置页面。
-
在 API 配置区域,点击 修改 按钮进行相应参数的编辑;修改完成后,点击 保存 按钮。
-
检查右上方开关,保证 API 服务处于 开通 状态。只有处于开通状态的 API 服务才能被调用。
测试 API 服务
相关信息请参考 API 测试。
生成客户端 SDK
相关信息请参考 代码生成。
结果
完成上述几步操作,API 服务即可供客户端调用。有关客户端开发的更多信息,参见下列客户端开发指南: