开放平台对满足OpenAPI 2.0规范的Swagger API提供快速创建服务的能力,并支持服务调用。本文介绍基于Swagger API发布服务和调用服务的流程。

前提条件

  • 您需要提交工单,由CSB技术支持人员创建实例。
  • 新建服务组
  • 已存在Swagger API。本场景提供示例Swagger API,网址为 https://petstore.swagger.io/v2/swagger.json

背景信息

本场景提供的示例Swagger API,存在于公网环境。如果您需要使用示例Swagger API体验发布和调用服务,需要申请公网访问权限。

说明 建议您使用VPC内的自建Swagger API进行体验服务发布与调用。

导入Swagger

  1. 登录云服务总线控制台

  2. 在左侧导航栏单击 实例列表

  3. 实例列表 单击具体实例名称。

  4. 实例概览 页面左侧导航栏选择 发布者 > 我的服务

  5. 我的服务 页面单击 导入Swagger

  6. Swagger服务导入 页面的 导入Swagger 页签中选择导入方式,然后单击 加载

    导入Swagger

    导入Swagger 参数说明:

    参数 描述 备注
    Swagger网址 swagger.json的网址,如 https://petstore.swagger.io/v2/swagger.json 您只需选择其中任一种导入Swagger的方式。本场景以 Swagger网址 的方式为例。
    Swagger文件 本地的Swagger文件。
    Swagger内容 复制粘贴的Swagger API内容。

    如果您选择 Swagger网址 或者 Swagger API ,在 加载 后也会在 Swagger内容 显示内容。

  7. 加载Swagger完成后,单击 下一步

创建Swagger

  1. Swagger服务导入 页面单击 创建Swagger 页签。

  2. 创建Swagger 页签中设置Swagger参数,然后单击 下一步

    创建Swagger

    创建Swagger 参数说明:

    参数 描述
    选择Swagger 选择Swagger的配置。
    • 如果是首次加载Swagger API,该值为 Swagger Petstore-新增
    • 后续加载Swagger API,可以选择之前的Swagger配置,该值为 Swagger Petstore(BasePath的值)
    Swagger名称 加载的Swagger API存在 Swagger名称 字段,支持自定义设置。
    Swagger版本 加载的Swagger API存在 Swagger版本 字段,支持自定义设置。
    接入端点 加载Swagger API后自动生成,不支持设置。
    BasePath 服务名称的前缀,支持自定义设置。
    负责人姓名 自定义设置负责人名称。
    负责人邮件 加载的Swagger API存在 负责人邮件 字段,此处支持自定义修改。

导入服务

  1. Swagger服务导入 页面单击 导入服务 页签。

  2. 设置接入协议。在基于Swagger API生成CSB服务场景中支持接入 RESTful SpringCloud 协议。

    • 当选择接入协议为 RESTful 时,需要 配置接入服务 参数。 配置接入服务

      配置接入服务 参数说明:

      参数 描述
      端点 RESTful服务地址。

      加载Swagger API时默认生成 端点 值,您可根据需要修改 端点 值,修改后,对 发布服务 区域的所有服务生效。

    • 当选择接入协议为 SpringCloud 时,需要设置 配置接入服务 参数。 配置接入服务

      配置接入服务 参数说明:

      参数 描述
      注册中心类型 要发布的服务所注册的注册中心类型。目前支持 Nacos Eureka EDAS注册中心

      请根据实际情况选择注册中心类型。

      注册中心地址 (适用于Nacos和Eureka注册中心) 注册中心的访问地址。
      EDAS命名空间TID (适用于EDAS注册中心) EDAS命名空间对应的TID。可以在EDAS控制台的 命名空间 页面查看。
      Spring Cloud服务名 所选注册中心注册的Spring Cloud服务名称。
      说明 由于注册中心可能在VPC内部,csbConsole无法直接访问,故CSB控制台上无法直接展示注册中心内已有的Spring Cloud服务列表。
      Spring Cloud服务访问协议 根据实际情况选择服务访问协议,支持 HTTP HTTPS
  3. 服务配置 区域设置服务基础参数。

    服务配置

    服务配置 参数说明:

    参数 描述
    BasePath 服务名称的前缀,不可修改。
    服务版本号 首次导入默认版本号 1.0.0 ,后续导入时默认显示已存在的版本号。

    您可根据实际需要修改 服务版本号 ,修改后,对 发布服务 区域的所有服务生效。

    超时时间 访问服务的超时时间,单位“ms”,默认值 3000
    服务组 在下拉列表中选择已创建的服务组。

    您可根据实际需要修改 服务组 ,修改后,对 发布服务 区域的所有服务生效。

    公开访问 是否允许公开访问,默认开启。
    • 关闭公开访问时,非服务发布者需要订购服务并通过审批后,才可以调用服务。
    • 开启公开访问时,无需订购服务,可直接调用服务。

    您可根据实际需要修改 公开访问 的状态,修改后,对 发布服务 区域的所有服务生效。

  4. 被占用服务 区域查看是否有被占用的服务。

    说明 被占用的服务即是该服务在当前实例上,已经被其他用户发布,无法再次被发布。
  5. 发布服务 区域对单个服务进行 编辑 不导入 或者 删除

    • 需要编辑单个服务的参数时,请单击目标服务后的 编辑 ,设置完参数后单击 确认 编辑服务

      编辑服务 参数说明:

      参数 描述
      超时时间 服务的超时时间,单位“ms”,默认值 3000
      QPS 每秒钟访问服务的量。默认值 0 ,即不限制访问服务的量。
      公开访问 是否允许公开访问,默认开启。
      • 关闭公开访问时,非服务发布者需要订购服务并通过审批后,才可以调用服务。
      • 开启公开访问时,即无需订购服务,可直接调用服务。
    • 如果要不导入某个服务,请单击目标服务后的 不导入 ,目标服务则会出现在 删除服务 区域。

      如果需要恢复服务,可在 删除服务 区域单击目标服务后的 还原 ,目标服务则会出现在 发布服务 区域。

    • 如果存在已经发布的服务,在该服务的操作列下有 删除 按钮。您可单击 删除 ,该服务出现在 删除服务 区域。

      如果需要恢复服务,可在 删除服务 区域单击目标服务后的 还原 ,目标服务则会出现在 发布服务 区域。

      说明 删除服务即是注销服务。
  6. 导入服务 页签右下角单击 完成发布

    在基于Swagger API生成CSB服务场景中,发布的服务较多,发布时间较长,请耐心等待。
  7. 在服务发布详情提示框单击 确认

    服务发布完成后,自动返回到 我的服务 页面,您可以查看所有服务信息。 服务列表

调用服务

导入的Swagger API包含多个服务,本场景仅以调用 MyPetstore.findPetsByStatus MyPetstore.getPetById 服务为例。

  1. 登录云服务总线控制台

  2. 在左侧导航栏单击 实例列表

  3. 实例列表 页面单击目标实例的实例名称。

  4. 实例概览 页面左侧导航栏选择 发布者 > 我的服务

  5. 我的服务 页面查找目标服务。

    本场景以调用 MyPetstore.findPetsByStatus MyPetstore.getPetById 服务为例。
  6. 调用 MyPetstore.findPetsByStatus 服务。

    1. 我的服务 页面单击 MyPetstore.findPetsByStatus 服务名称。

    2. 服务详情 页面 服务基本信息 区域,查看并记录服务访问地址。

      本示例以展示RESTful服务访问地址为例: 服务访问地址
    3. 服务详情 页面 接入协议 区域,查看并记录入参信息。

      MyPetstore.findPetsByStatus 服务的入参为 status status 的取值信息请从Swagger API中获取,本示例的取值为 available pending sold
    4. 在浏览器地址栏输入服务访问地址,并在地址后加上入参取值,然后按 enter 键,界面返回服务详细信息。

      服务访问地址为 http://CSB服务地址:8086/服务版本/服务名称?入参取值 ,各参数说明如下:
      • CSB服务地址即创建CSB实例时绑定的SLB的地址。
      • 默认的访问端口为 8086
      • 服务版本即该服务的版本号,如 1.0.0
      • 服务名称在本示例中即是 MyPetstore.findPetsByStatus
      • 入参取值即是服务的入参取值信息,如 status=sold

      界面返回服务详细信息如下:

      <pets>
              <category>
                  <id>8128823</id>
                  <name>Category</name>
              </category>
              <id>6812466</id>
              <name>Bob</name>
              <photoUrls>
                  <photoUrl>www.petPhotos.com/1.jpg</photoUrl>
                  <photoUrl>www.petPhotos.com/2.jpg</photoUrl>
                  <photoUrl>www.petPhotos.com/3.png</photoUrl>
              </photoUrls>
              <status>sold</status>
                      <id>308662</id>
                      <name>Tag1</name>
              </tags>
      </pets>
  7. 调用 MyPetstore.getPetById 服务。

    1. 我的服务 页面单击 MyPetstore.getPetById 服务名称。

    2. 服务详情 页面 服务基本信息 区域,查看并记录服务访问地址。

      本示例以展示RESTful服务访问地址为例: 服务访问地址
    3. 服务详情 页面 接入协议 区域,查看并记录入参信息。

      MyPetstore.getPetById 服务没有入参。
    4. 在浏览器地址栏输入服务访问地址,并把 petId 修改为真实值,然后按 enter 键,界面返回服务详细信息。

      服务访问地址为 http://CSB服务地址:8086/服务版本/服务名称/petId ,各参数说明如下:
      • CSB服务地址即创建CSB实例时绑定的SLB的地址。
      • 默认的访问端口为 8086
      • 服务版本即该服务的版本号,如 1.0.0
      • 服务名称在本示例中即是 MyPetstore.getPetById
      • petId是通过调用 MyPetstore.findPetsByStatus 服务查询出来的结果,如 6812466

      界面返回服务详细信息如下:

      <Pet>
          <category>
              <id>8128823</id>
              <name>Category</name>
          </category>
          <id>6812466</id>
          <name>Bob</name>
          <photoUrls>
              <photoUrl>www.petPhotos.com/1.jpg</photoUrl>
              <photoUrl>www.petPhotos.com/2.jpg</photoUrl>
              <photoUrl>www.petPhotos.com/3.png</photoUrl>
          </photoUrls>
          <status>sold</status>
                  <id>308662</id>
                  <name>Tag1</name>
          </tags>