全部产品

TR API(仅专有云可用)

更新时间:2020-11-06 18:50:50

TR 是蚂蚁金服 RPC 框架,仅适用于 专有云。快速开始指导您注册并发布一个供移动端调用的 TR 类型的 API 服务。整体过程分为六步:

  1. 服务端开发
  2. 注册 API 分组
  3. 注册 API 服务
  4. 配置 API 服务
  5. 测试 API 服务
  6. 生成客户端 SDK

服务端开发

引入网关二方包

在项目的主 pom.xml 文件中引入如下二方包(如原工程已经有依赖,请忽略)。mobilegw-unify 系列依赖请使用最新版本,当前最新版本为 1.0.5.20180810

  1. <!-- mobilegw unify dependency-->
  2. <dependency>
  3. <groupId>com.alipay.gateway</groupId>
  4. <artifactId>mobilegw-unify-spi-sofa</artifactId>
  5. <version>${the-lastest-version}</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.alipay.gateway</groupId>
  9. <artifactId>mobilegw-unify-spi-adapter</artifactId>
  10. <version>${the-lastest-version}</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>com.alipay.gateway</groupId>
  14. <artifactId>mobilegw-unify-log</artifactId>
  15. <version>${the-lastest-version}</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>com.alipay.hybirdpb</groupId>
  19. <artifactId>classparser</artifactId>
  20. <version>1.2.2</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.apache.commons</groupId>
  24. <artifactId>commons-lang3</artifactId>
  25. <version>3.5</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>com.alibaba</groupId>
  29. <artifactId>fastjson</artifactId>
  30. <version>1.2.48</version>
  31. </dependency>
  32. <!-- 如果使用了pb,请加入如下依赖-->
  33. <dependency>
  34. <groupId>com.google.protobuf</groupId>
  35. <artifactId>protobuf-java</artifactId>
  36. <version>2.6.1</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>io.protostuff</groupId>
  40. <artifactId>protostuff-core</artifactId>
  41. <version>1.3.8.20160722</version>
  42. </dependency>
  43. <dependency>
  44. <groupId>io.protostuff</groupId>
  45. <artifactId>protostuff-runtime</artifactId>
  46. <version>1.3.8.20160722</version>
  47. </dependency>
  48. <dependency>
  49. <groupId>io.protostuff</groupId>
  50. <artifactId>protostuff-api</artifactId>
  51. <version>1.3.8.20160722</version>
  52. </dependency>
  53. <dependency>
  54. <groupId>io.protostuff</groupId>
  55. <artifactId>protostuff-collectionschema</artifactId>
  56. <version>1.3.8.20160722</version>
  57. </dependency>

定义服务接口并实现接口

  1. 按照业务需求,定义服务接口:com.alipay.xxxx.MockRpc

    说明
    • 建议将方法定义中的入参定义为 VO,这样后期可以直接在 VO 中添加参数,而不改变方法的声明格式。
    • 服务接口定义的相关规范,请参见 业务接口定义规范
  2. 提供该接口的实现 com.alipay.xxxx.MockRpcImpl

定义 OperationType

在服务接口的方法上添加 @OperationType 注解,定义发布服务的接口名称。@OperationType 有 3 个参数成员,为便于维护,请填写完整:

  • value:接口唯一标识,在网关全局唯一。定义该参数值时,尽量详细,否则会和其他业务方的 value 值一样,导致无法注册服务定义规则:组织.产品域.产品.子产品.操作
  • name:接口中文名称。
  • desc:接口描述。

示例如下:

  1. public interface MockRpc {
  2. @OperationType(value="com.alipay.mock", name="MPC mock 接口", desc="复杂 mock 接口")
  3. Resp mock(Req s);
  4. @OperationType(value="com.alipay.mock2",name="xxx", desc="xxx")
  5. String mock2(String s);
  6. }
  7. public static class Resp {
  8. private String msg;
  9. private int code;
  10. // ignore getter & setter
  11. }
  12. public static class Req {
  13. private String name;
  14. private int age;
  15. // ignore getter & setter
  16. }

声明 API 服务

该步骤目的是将定义好的 RPC 服务,通过网关提供的 SPI 包,声明为对外提供服务的 API。需要填写参数 appName,参数值为业务方的应用名。

您可以通过 SpringSpring Boot 方式声明 API 服务。

Spring 声明方式

  1. 在对应 bundle 的 Spring 配置文件中,声明上述服务的 Spring Bean。示例如下:

    1. <bean id="mockRpc" class="com.alipay.gateway.spi.mpc.test.MockRpcImpl"/>
  2. 在对应 bundle 的 Spring 配置文件中,声明 com.alipay.gateway.spi.sofa.SofaServiceStarter 类型的 Spring Bean。SofaServiceStarter 会将所有带有 @OperationType 的 bean 通过 TR 协议暴露给网关调用。示例如下:

    1. <bean id="sofaServiceStarter" class="com.alipay.gateway.spi.sofa.SofaServiceStarter">
    2. <property name="appName" value="${app_name}"/>
    3. </bean>

Spring Boot 声明方式

  1. 以注解的方式声明上述服务的 Spring Bean。示例如下:

    1. @Service
    2. public class MockRpcImpl implements MockRpc{
    3. }
  2. 以注解的方式声明 com.alipay.gateway.spi.sofa.SofaServiceStarter 类型的 Spring Bean。SofaServiceStarter 会将所有带有 @OperationType 的 bean 通过 TR 协议暴露给网关调用。示例如下:

    1. @Configuration
    2. public class TRDemo {
    3. @Bean(name="sofaServiceStarter")
    4. public SofaServiceStarter sofaServiceStarter(){
    5. SofaServiceStarter sofaServiceStarter = new SofaServiceStarter();
    6. sofaServiceStarter.setAppName("${app_name}");
    7. return sofaServiceStarter;
    8. }
    9. }

注册 API 分组

  1. 进入移动网关管理页面。

    1. 登录控制台,在 产品与服务 中选择 移动开发平台 mPaaS 进入移动开发平台主页。
    2. 切换至正确的工作空间后,点击需要接入 API 服务的 APP 名称。
    3. 在左侧导航栏选择 移动网关,进入移动网关管理页面。
  2. 选择 API 分组 选项卡进入 API 分组列表页,点击 添加 API 分组 按钮。

  3. 在弹出的对话框中填写表单信息。

    • 分组类型:此处选择 TR。
    • API 分组:必填,提供服务的业务系统的英文名称。
    • 直连地址:选填,需要直连时填写。由 IP 和端口组成,端口不指定时默认为 12200
    • 超时时间:选填,发送请求至业务系统时的超时时间,单位毫秒,默认值为 3000 ms。
  4. 点击 确定 按钮提交。
    如需进一步完善 API 分组相关配置,请阅读 配置分组

注册 API 服务

  1. 选择 API 管理 选项卡进入 API 列表页,点击 添加 API 按钮。

  2. 在弹出的对话框中,API 类型 选择 TR,选择 API 分组,在拉取到的 operationType 列表中勾选需要的服务,点击 确认 按钮。

配置 API 服务

  1. 点击 API 列表操作列中的 配置,进入 API 配置页面。
  2. 在 API 配置区域,点击 修改 按钮进行相应参数的编辑;修改完成后,点击 保存 按钮。

    说明
    • 为了快速入门,您可以先将 高级配置 中的 签名校验 关闭。关于签名校验的详细信息,请参考 签名校验说明
    • 关于 API 配置的详细信息,请参考 API 配置
  3. 检查右上方开关,保证 API 服务处于 开通 状态。只有处于开通状态的 API 服务才能被调用。

测试 API 服务

相关信息请参考 API 测试

生成客户端 SDK

相关信息请参考 代码生成

结果

完成上述几步操作,API 服务即可供客户端调用。有关客户端开发的更多信息,参见下列客户端开发指南: