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

前提条件

  • 创建实例(如果使用共享实例,则不用创建实例。)
  • 新建服务组
  • 已存在Swagger API。本场景提供示例Swagger API,网址为https://petstore.swagger.io/v2/swagger.json

背景信息

本场景提供的示例Swagger API,存在于公网环境。因此介绍在共享实例上导入Swagger API发布服务和调用服务。

说明 您的专享实例默认没有公网访问权限,如果您使用专享实例体验示例Swagger API发布和调用服务,请申请公网访问权限。当然您也可以使用您VPC内的Swagger API进行体验。

导入Swagger

  1. 登录CSB控制台
  2. 在顶部菜单栏选择地域
  3. 在左侧导航栏单击实例列表
  4. 实例列表单击具体实例名称。
  5. 实例概览页面左侧导航栏选择发布者 > 我的服务
  6. 我的服务页面单击导入Swagger
  7. Swagger API导入页面的导入Swagger页签中选择导入方式,然后单击加载
    导入swagger
    导入Swagger参数说明。
    参数 描述 备注
    Swagger网址 swagger.json的网址,如https://petstore.swagger.io/v2/swagger.json 您只需选择其中任一种导入Swagger的方式。本场景以Swagger网址的方式为例。
    Swagger文件 本地的Swagger文件。
    Swagger内容 复制粘贴的Swagger API内容。

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

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

创建Swagger

  1. Swagger API导入页面单击创建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 API导入页面单击导入服务页签。
  2. 设置接入协议。在基于Swagger API生成CSB服务场景中支持接入RESTfulSpringCloud协议。
    • 当选择接入协议为RESTful时,需要配置接入服务参数。配置接入服务
      配置接入服务参数说明。
      参数 描述
      端点 RESTful服务地址。

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

    • 当选择接入协议为SpringCloud时,需要设置配置接入服务参数。配置接入服务
      配置接入服务参数说明。
      参数 描述
      注册中心类型 要发布的服务所注册的注册中心类型。目前支持NacosEurekaEDAS注册中心

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

      注册中心地址(适用于Nacos和Eureka注册中心) 注册中心的访问地址。
      EDAS命名空间TID(适用于EDAS注册中心) EDAS命名空间对应的TID。可以在EDAS控制台的命名空间页面查看。
      Spring Cloud服务名 所选注册中心注册的Spring Cloud服务名称。
      说明 由于注册中心可能在VPC内部,csbConsole无法直接访问,故CSB控制台上无法直接展示注册中心内已有的Spring Cloud服务列表。
      Spring Cloud服务访问协议 根据实际情况选择服务访问协议,支持HTTPHTTPS
  3. 服务配置区域设置服务基础参数。
    服务配置
    服务配置参数说明:
    参数 描述
    BasePath 服务名称的前缀,不可修改。
    服务版本号 首次导入默认版本号1.0.0,后续导入时默认显示已存在的版本号。

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

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

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

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

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

  4. 被占用服务区域查看是否有被占用的服务。
    说明 被占用的服务即是该服务在当前实例上,已经被其他用户发布,无法再次被发布。
  5. 发布服务区域对单个服务进行编辑不导入或者删除
    • 需要编辑单个服务的参数时,请单击目标服务后的编辑,设置完参数后单击确认编辑服务
      编辑服务参数说明:
      参数 描述
      超时时间 服务的超时时间,单位“ms”,默认值3000
      QPS 每秒钟访问服务的量。默认值0,即不限制访问服务的量。
      公开访问 是否允许公开访问,默认开启。
      • 关闭公开访问时,非服务发布者需要订购服务并通过审批后,才可以调用服务。
      • 开启公开访问时,即无需订购服务,可直接调用服务。
    • 如果要不导入某个服务,请单击目标服务后的不导入,目标服务则会出现在删除服务区域。

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

      注意 当使用共享实例发布Swagger API服务时,同一个服务组下最大只能发布3个服务。因此您需要选择小于等于3个服务进行发布,其他服务请先 不导入。待您完成第一批服务的调用后,在 我的服务页面将其 注销,然后重新选择服务发布,分批完成所有服务的发布与调用体验。
    • 如果存在已经发布的服务,在该服务的操作列下有删除按钮。您可单击删除,该服务出现在删除服务区域。

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

      说明 删除服务即是注销服务。
  6. 导入服务页签右下角单击完成发布
    在基于Swagger API生成CSB服务场景中,发布的服务较多,发布时间较长,请耐心等待。
  7. 在服务发布详情提示框单击确认
    服务发布完成后,自动返回到 我的服务页面,您可以查看所有服务信息。 服务列表

调用服务

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

  1. 登录CSB控制台
  2. 在顶部菜单栏选择地域
  3. 在左侧导航栏单击实例列表
  4. 实例列表页面单击目标实例的实例名称。
  5. 实例概览页面左侧导航栏选择发布者 > 我的服务
  6. 我的服务页面查找目标服务。
    本场景以调用 MyPetstore.findPetsByStatusMyPetstore.getPetById服务为例。
  7. 调用MyPetstore.findPetsByStatus服务。
    1. 我的服务页面单击MyPetstore.findPetsByStatus服务名称。
    2. 服务详情页面服务基本信息区域,查看并记录服务访问地址。
      本示例以展示RESTful服务访问地址为例: 服务访问地址
    3. 服务详情页面接入协议区域,查看并记录入参信息。
      MyPetstore.findPetsByStatus服务的入参为 statusstatus的取值信息请从Swagger API中获取,本示例的取值为 availablependingsold
    4. 在浏览器地址栏输入服务访问地址,并在地址后加上入参取值,然后按enter键,界面返回服务详细信息。
      服务访问地址为 http://CSB服务地址:8086/服务版本/服务名称?入参取值,各参数说明如下:
      • CSB服务地址即创建CSB实例时绑定的SLB的地址。
      • 默认的访问端口为8086
      • 服务版本即该服务的版本号,如1.0.0
      • 服务名称在本示例中即是MyPetstore.findPetsByStatus
      • 入参取值即是服务的入参取值信息,如status=sold
      界面返回服务详细信息如下:
      <pets>
          <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>
              <tags>
                  <tag>
                      <id>308662</id>
                      <name>Tag1</name>
                  </tag>
              </tags>
          </Pet>  
      </pets>
  8. 调用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>
          <tags>
              <tag>
                  <id>308662</id>
                  <name>Tag1</name>
              </tag>
          </tags>
      </Pet>