全部产品

SOFARPC API 入门(仅专有云)

更新时间:2020-09-01 19:27:09

本文将引导您创建、发布并调用一个 SOFARPC 协议类型的 API 服务,以快速体验 API 网关。

操作步骤

说明:建议您先参见 快速入门概述,了解 API 网关的角色及完整使用流程。

入门流程

  1. API 发布者编写 SOFARPC Server
  2. API 发布者创建系统集群
  3. API 发布者创建 API 分组
  4. API 发布者创建并发布 SOFARPC API
  5. API 订阅者创建应用
  6. API 发布者创建授权对象
  7. API 发布者绑定授权对象
  8. API 订阅者编写 API 调用代码

示例工程

为方便快速体验 API 网关的 SOFARPC API 服务,您可以点击此处下载本文涉及的 示例工程

步骤一:编写 SOFARPC Server

SOFARPC Server 的编写没有特殊的要求,按照 SOFARPC 的标准教程即可,此处简单编写一个 UserService。

  1. public interface SampleService {
  2. User message();
  3. }
  4. public class SampleServiceImpl implements SampleService {
  5. @Override
  6. public User message() {
  7. User user = new User();
  8. user.setAge(18);
  9. user.setName("tom");
  10. return user;
  11. }
  12. }
  13. public class User {
  14. private String name;
  15. private int age;
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public int getAge() {
  23. return age;
  24. }
  25. public void setAge(int age) {
  26. this.age = age;
  27. }
  28. }

将该服务发布为 SOFARPC 服务,示例如下:

  1. <bean id="sampleService" class="com.alipay.gateway.endpoint.impl.SampleServiceImpl"/>
  2. <!-- 发布 RPC 服务 -->
  3. <sofa:service ref="sampleService" interface="com.alipay.gateway.endpoint.sofarpc.SampleService">
  4. <sofa:binding.bolt/>
  5. </sofa:service>

步骤二:创建系统集群

  1. 进入 API 网关控制台页面,左侧导航栏选择 API 发布 > 系统集群
  2. 在系统集群列表页面,点击右上方的 创建系统集群 按钮。
  3. 在新弹出窗口中,您需要配置以下信息:
    • 系统集群名称:必填,用于识别系统集群。根据本示例,此处可使用 sofarpc-demo
    • 协议类型:支持 HTTP、SOFARPC、MRPC、SOFAREST。根据本示例,此处需选择 SOFARPC
    • 地址配置方式:SOFAREST 可以 手动配置 服务端地址,也可以通过 SOFA 注册中心 来订阅。本示例选择 手动配置,直接指定一个 IP 进行调用。
    • IP 地址/域名:格式为 地址:端口。本示例中,IP 地址使用 30.39.170.42,端口号使用 12200
      • IP 地址或域名
        • IP 地址格式为 (1~255).(0~255).(0~255).(0~255)
        • 域名可以包含字母、数字或者半角的连接符 “-“,总共不超过255 个字符。
      • 端口:SOFARPC 默认端口为 12200。端口号范围为 1-65535。
    • 描述:选填,用于描述系统集群的作用等,64 个字符以内,可为空。
      创建系统集群
  4. 点击 确定

步骤三:创建 API 分组

  1. 进入 API 网关控制台页面,左侧导航栏中选择 API 发布 > API 分组,进入分组列表。
  2. 点击 API 分组列表右上方的 创建分组 按钮。
  3. 在新弹出窗口中,输入 API 分组信息:
    • 分组名称:必填,用于识别 API 分组。支持英文字母、中文、数字、_、-,32 个字符以内。本示例使用 sofarpc-demo
    • 描述:选填,用于描述 API 分组的作用等,64 个字符以内,可为空。
      创建 API 分组
  4. 点击 确定

步骤四:创建并发布 SOFARPC API(跨 VPC)

  1. 进入 API 网关控制台 > API 发布 > API 管理 页,点击列表右上方的 创建 API
  2. 在新页面中,选择 SOFARPC API(跨 VPC) 类型,点击 创建
  3. 创建 SOFARPC API 页面,您需要配置以下信息:
    • 所属分组:必选,用于将 API 进行逻辑的分组,分组下的 API 相同的分组 ID 进行隔离。本示例使用上一步创建的 sofarpc-demo
    • API 名称:必填,用于识别 API,支持英文字母、中文、数字、_、-,32 个字符以内。本示例使用 sofarpc
    • 描述:选填,用于描述 API 的作用等,64 个字符以内。
    • 接口名称:必填,支持英文字母、数字、. 、: 、@,以小写字母作为开头。本示例使用 com.alipay.gateway.endpoint.facade.SampleService:1.0@DEFAULT
    • 安全认证:必选。本示例中,选择 密钥认证,表示订阅应用访问授权的 API 时使用密钥进行身份认证。
    • 超时时间:必填,API 请求超时时间,单位为毫秒(ms),保持默认 3000 ms 即可。
    • 后端服务类型:必选,选择 系统集群,继而选择步骤二创建的系统集群 sofarpc-demo
  4. 点击 创建
  5. 创建完成后,点击 立即发布 发布该 API。
    api

步骤五:创建应用

  1. 进入 API 网关控制台 > API 订阅 > 应用管理 页,点击列表右上方的 创建应用
  2. 创建应用 窗口,选择 应用类型应用
  3. 输入 应用名称,用于识别应用。本例使用 SOFARPC
    创建应用
  4. 点击 确定

应用添加完成后,订阅者需在应用详情页,获取该应用 APPID。获取 APPID 后,需将 APPID 提供给想要订阅的 API 的发布者,获得该 API 的访问授权。

步骤六:创建授权对象

  1. 进入 API 网关控制台 > API 发布 > 授权管理 页,点击列表右上方的 创建授权对象
  2. 创建授权对象 窗口中,配置订阅方应用的授权信息。
    • 应用来源:必选。此处选 内部系统,表示授权给当前租户的当前环境下的应用订阅。
    • 应用名称:输入其上一步创建的应用名称,如 SOFARPC,系统会自动获取其 APPID 与类型。
    • 所属公司/部门:用于识别应用所属的公司或部门,可为空。
    • 描述:输入对该授权对象的备注信息,可为空。
      创建授权对象
  3. 点击 确定

步骤七:绑定授权对象

  1. API 管理 页面,找到待订阅 API,进入其详情页。
  2. 授权对象 标签页下,点击 绑定授权对象
  3. 添加授权对象 窗口中,找到刚刚创建的授权应用。
    绑定授权对象
  4. 勾选该应用,点击 确定,完成 API 授权。

步骤八:编写 API 调用代码

  1. 获取如下服务配置信息:
    • 在订阅方应用详情页获取该应用的密钥(Access Key/Secret Key)。
      应用的密钥
    • 在 API 详情页获取该 API 分组 ID(host)、接口名称(interface)。
      API 详情
  2. 根据刚刚获取的服务配置信息,修改 sofareference 的方式:
    1. <sofa:reference id= "sampleServiceRefGateway" interface="com.alipay.gateway.endpoint.facade.SampleService" >
    2. <sofa:binding.bolt>
    3. <sofa:global-attrs connect.timeout="10000" registry="gateway"/>
    4. <sofa:parameter key="gateway.host" value="pualktevbjs90g8n"/>
    5. <sofa:parameter key="gateway.ak" value="7cqEjplYKIuGHxZL"/>
    6. <sofa:parameter key="gateway.sk" value="z35HWe5kMvgeGlmMhD2YbngzQXmeMWow"/>
    7. </sofa:binding.bolt>
    8. </sofa:reference>
  3. 编写调用代码,示例如下:

    1. public class SofaRpcGatewayServiceTest extends AbstractTestBase {
    2. @Autowired
    3. private SampleService sampleServiceRefGateway;
    4. @Override
    5. public void childSetUp() {
    6. }
    7. @Test
    8. public void Test(){
    9. System.out.println(JSON.toJSONString(sampleServiceRefGateway.message()));
    10. }
    11. }
  4. 发起调用后,可得出相应结果,示例如下:
    1. {"age":18,"name":"tom"}

相关链接