移动开发平台 mPaaS HRPC API(仅专有云可用)

By | 2021年4月23日

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

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

服务端开发

引入网关二方包

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

  
  1. <!-- mobilegw unify dependency-->
  2. <dependency>
  3. <groupId>com.alipay.gateway</groupId>
  4. <artifactId>mobilegw-unify-spi-hrpc</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.sofa</groupId>
  19. <artifactId>hessian</artifactId>
  20. <version>3.3.6</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>com.alipay.hybirdpb</groupId>
  24. <artifactId>classparser</artifactId>
  25. <version>1.2.2</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.apache.commons</groupId>
  29. <artifactId>commons-lang3</artifactId>
  30. <version>3.5</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>com.alibaba</groupId>
  34. <artifactId>fastjson</artifactId>
  35. <version>1.2.69_noneautotype</version>
  36. </dependency>
  37. <!-- 如果使用了pb,请加入如下依赖-->
  38. <dependency>
  39. <groupId>com.google.protobuf</groupId>
  40. <artifactId>protobuf-java</artifactId>
  41. <version>2.6.1</version>
  42. </dependency>
  43. <dependency>
  44. <groupId>io.protostuff</groupId>
  45. <artifactId>protostuff-core</artifactId>
  46. <version>1.3.8.20160722</version>
  47. </dependency>
  48. <dependency>
  49. <groupId>io.protostuff</groupId>
  50. <artifactId>protostuff-runtime</artifactId>
  51. <version>1.3.8.20160722</version>
  52. </dependency>
  53. <dependency>
  54. <groupId>io.protostuff</groupId>
  55. <artifactId>protostuff-api</artifactId>
  56. <version>1.3.8.20160722</version>
  57. </dependency>
  58. <dependency>
  59. <groupId>io.protostuff</groupId>
  60. <artifactId>protostuff-collectionschema</artifactId>
  61. <version>1.3.8.20160722</version>
  62. </dependency>

定义服务接口并实现接口

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

    说明

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

定义 OperationType

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

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

示例如下:

  
  1. public interface MockRpc {
  2. @OperationType(value="com.alipay.mock", name="HRPC 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。需要如下三个参数:

  • registryUrl:必填,注册中心的地址。
  • appName:必填,业务方的应用名。
  • serverPort:选填,HRPC 服务监听端口,默认为 7079。

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

Spring 声明方式

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

        
    1. <bean id="mockRpc" class="com.alipay.gateway.spi.hrpc.test.MockRpcImpl"/>
  2. 在对应 bundle 的 Spring 配置文件中,声明 com.alipay.gateway.spi.hrpc.HRpcServiceStarter 类型的 Spring Bean。HRpcServiceStarter 会将所有带有 @OperationType 的 bean 通过 HRPC 协议注册到指定的注册中心。示例如下:

        
    1. <bean id="hrpcServiceStarter" class="com.alipay.gateway.spi.hrpc.HRpcServiceStarter">
    2. <property name="registryUrl" value="${registry_url}"/>
    3. <property name="appName" value="${app_name}"/>
    4. <property name="serverPort" value="${serverPort可选,默认为 7079}"/>
    5. </bean>

Spring Boot 声明方式

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

        
    1. @Service
    2. public class MockRpcImpl implements MockRpc{
    3. }
  2. 以注解的方式声明 com.alipay.gateway.spi.hrpc.HRpcServiceStarter 类型的 Spring Bean。HRpcServiceStarter 会将所有带有 @OperationType 的 bean 通过 HRPC 协议注册到指定的注册中心。示例如下:
        
    1. @Configuration
    2. public class HRpcDemo {
    3. @Bean(name="hrpcServiceStarter")
    4. public HRpcServiceStarter hrpcServiceStarter(){
    5. HRpcServiceStarter hRpcServiceStarter = new HRpcServiceStarter();
    6. hRpcServiceStarter.setAppName("${app_name}");
    7. hRpcServiceStarter.setRegistryUrl("${registry_url}");
    8. hRpcServiceStarter.setServerPort("${serverPort可选}");
    9. return hRpcServiceStarter;
    10. }
    11. }

注册 API 分组

只有先注册了 API 分组,在后续创建完 API 并对其进行配置时,才可在 接入系统 中选择已创建的 API 分组。

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

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

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

    • 分组类型:此处选择 HRPC。
    • API 分组:必填,提供服务的业务系统的名称,由字母或下划线开头,只支持字母、数字、下划线以及连字符。
    • 注册中心:必填,注册中心 URL。
    • 超时时间:选填,发送请求至业务系统时的超时时间,单位毫秒,默认值为 3000 ms。
  4. 单击 确定 按钮提交。
    如需进一步完善 API 分组相关配置,请阅读 配置分组

注册 API 服务

  1. 选择 API 管理 选项卡进入 API 列表页,单击 创建 API 按钮。

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

配置 API 服务

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

    说明

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

测试 API 服务

相关信息请参见 API 测试

生成客户端 SDK

相关信息请参见 代码生成

结果

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

请关注公众号获取更多资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注