阿里云Api网关导入Swagger功能简介

简介: Swagger生态已经广泛用于Api的创建与管理。最新版本的API网关产品也对Swagger进行了支持。本文就此进行详细介绍
广告位

Api网关通过导入Swagger文件创建和更新Api的功能已经上线了,更多帅气功能会逐步推出
Api网关目标是让您发布应用更加便捷和安全,让您更直观、便捷的管理和调试您的所有Api接口
欢迎试用阿里云Api网关产品,任何问题可以加Ding群讨论:11747055

1. 什么是swagger

微服务现在在商业引用程序开发中,已经广泛使用。而Api作为连接微服务之间的桥梁扮演着至关重要的角色。如何可以更清晰的描述微服务接口、如何可以更便捷便捷的管理Api,已经成为开发人员呼声很高的需求。而作为设计和管理api的利器,Swagger也随之成为了热门。

Swagger出现在2010年,它设计的初衷在于制定一种简单的规范,用于设计Api。Swagger文件可用于开发人员后期维护和管理。随着不断的发展,基于swagger规范,已经衍生出很多工具,用于辅助创建和管理Swagger文件,并已经形成了Swagger生态。用户可以通过Swagger工具来对api的整个生命周期进行设计,管理以及测试等操作。Swagger规范现在已经改名为Openapi规范,它将作为一种定义api管理的规范不断的完善与发展。

2. Api网关的定位

Api网关产品,可以为企业和个人提供完成的API托管服务。用户可以直接使用Api网关提供的认证、流控和监控等功能而无需自行开发。这样,用户就可以更专注于开发和实现自己的后端业务系统,而省去很多系统通用但是不可或缺的功能组件的开发工作。

接入Api网关通常需要如下步骤:

  1. 定义Api基本属性,如Api名称,认证方式,基本描述等。
  2. 配置Api访问相关属性,用于设置暴露给第三方的访问参数等
  3. 配置APi后端相关属性,用于设置真正的后端服务地址,以及参数信息,超时时间等

通过这些配置,就可以完成api在Api网关的接入工作了。具体参考官方文档:Api网关使用须知

3. Swagger基于阿里云Api网关的扩展

与Swagger相同,阿里云Api网关具备Api管理的功能。除此之外,Api网关提供了身份认证,防重放,请求加密以及流量控制等功能。对于用户而言,如果可以将本地用Swagger管理的Api托管至Api网关,在一定程度将会有很大的增益。

因为Swagger与Api网关的定位不同,原生的Swagger文件并不能够直接导入Api网关用来创建Api。详细来说,Swagger通常用于定义和管理真实的服务Api,所以其定义的“访问相关属性”均为服务实际Api的属性,如服务的地址以及传入的参数。因此,Swagger并无类似于“Api后端相关”的属性。而对于Api网关,参数映射及后端服务地址保护是其不可或缺的特性。对此,阿里云Api网关实现了一些Swagger扩展,让用户只需对原生swagger进行简单修改,便能够将其swagger管理的api托管至Api网关进行管理,并享有Api网关提供的所有功能特性。

Swagger扩展主要是对于swagger原生Operation Object进行扩展,增加认证、参数映射以及后端服务等扩展。所有扩展均以x-aliyun-apigateway-开头,具体扩展内容如下:

3.1 x-aliyun-apigateway-auth-type: 授权类型

授权类型,应用于Operation Object。用于指定该API的授权类型,其中:

取值范围:

  • APP(默认值): 阿里云API网关APP授权
  • ANONYMOUS: 匿名

示例

...
paths:
  'path/':
    get:
      x-aliyun-apigateway-auth-type: ANONYMOUS
...

3.2 x-aliyun-apigateway-paramater-handling: API映射关系

API映射关系, 应用于Operation Object,用于指定请求参数与后端服务参数的映射关系。当映射关系选择PASSTHROUGH时,Parameter Object不支持 x-aliyun-apigateway-backend-locationx-aliyun-apigateway-backend-name 属性。

取值范围:

  • PASSTHROUGH(默认值): 入参透传
  • MAPPING: 入参映射

示例

...
paths:
  'path/':
    get:
      x-aliyun-apigateway-paramater-handling: MAPPING
...

3.3 x-aliyun-apigateway-backend: 后端类型

后端类型, 应用于Operation Object。用于设置后端服务信息。根据后端服务类型,决定具体的属性,详情如下:

1.3.1 后端服务类型:HTTP

HTTP的后端类型用于直接配置后端服务地址,一般用于后端地址可以直接访问的场合。

属性说明:

属性名称 类型 描述
type string 必填;值为HTTP
address string 必填;用于标识后端服务地址
path string 必填:用于标识后端服务路径。支持路径变量
method string 必填:后端请求方法
timeout int 选填,默认为10000。该属性取值范围为[500,30000]

示例:

...
x-aliyun-apigateway-backend:
  type: HTTP
  address: http://10.10.100.2:8000
  path: "/users/{userId}"
  method: GET
  timeout: 7000
...

3.3.2 后端服务类型:HTTP-VPC

HTTP-VPC的后端类型用于后端服务在VPC网络内的场合,需要先创建VPC授权,使用VPC授权名导入。

属性说明:

属性名称 类型 描述
type string 必填;值为:HTTP-VPC
vpcAccessName string 必填;后端服务使用的vpc实例名称
path string 必填:用于标识后端服务路径。支持路径变量
method string 必填:后端请求方法
timeout int 选填,默认为10000。该属性取值范围为[500,30000]

示例:

...
x-aliyun-apigateway-backend:
  type: HTTP_VPC
  vpcAccessName: vpcAccess1
  path: "/users/{userId}"
  method: GET
  timeout: 10000
...

3.3.3 后端服务类型: MOCK

MOCK的后端类型,用来模拟最初预定的返回结果。

属性说明:

属性名称 类型 描述
type string 必填;值为:MOCK
mockResult string 必填;mock返回结果
mockStatusCode Integer 选填
mockHeaders Header 选填

Header 的 说明

属性名称 类型 描述
name string 必填
value string 必填

示例:

...
x-aliyun-apigateway-backend:
  type: MOCK
  mockResult: mock resul sample
  mockStatusCode :200
  mockHeaders :
     - name : server
       value : mock
     - name : proxy
       value : GW
...

3.4 x-aliyun-apigateway-constant-parameters: 常量参数

常量参数, 应用于Operation Object,用于定义后端服务的常量参数。

属性说明:

属性名称 类型 描述
backendName string 必填;后端参数名称
value string 必填;常量值
location String 必填;常量参数存放位置,可选值:[query,header]
description string 可选;用于对该常量进行说明

示例:

      ...
      x-aliyun-apigateway-constant-parameters:
        - backendName: swaggerConstant
          value: swaggerConstant
          location: header
          description: description of swagger
      ...

3.5 x-aliyun-apigateway-system-parameters: 后端服务参数

后端服务参数, 应用于Operation Object,用于定义API后端服务的系统参数。

属性说明:

属性名称 类型 描述
systemName string 必填;系统参数名称
backendName string 必填;后端参数名称
location String 必填;常量参数存放位置,可选值:[query,header]

示例:

    ...
    x-aliyun-apigateway-system-parameters:
        - systemName: CaAppId
          backendName: appId
          location: header
   ...

3.6 x-aliyun-apigateway-backend-location: 后端参数位置

后端参数位置, 应用于 Parameter Object。该属性仅在 x-aliyun-apigateway-paramater-handling: MAPPING设置时生效,用于设置参数映射后,在后端服务请求时的参数位置。

取值范围:

  • path
  • header
  • query
  • formData

示例:

     ...
      parameters:
        - name: swaggerHeader
          in: header
          required: false
          type: number
          format: double
          minimum: 0.1
          maximum: 0.5
          x-aliyun-apigateway-backend-location: query
          x-aliyun-apigateway-backend-name: backendQuery
      ...

3.7 x-aliyun-apigateway-backend-name: 后端参数名称

后端参数名称, 应用于Parameter Object。该属性仅在 x-aliyun-apigateway-paramater-handling: MAPPING设置时生效,用于设置参数映射后,在后端服务请求时的参数名称。

示例:

      ...
      parameters:
        - name: swaggerHeader
          in: header
          required: false
          type: number
          format: double
          minimum: 0.1
          maximum: 0.5
          x-aliyun-apigateway-backend-location: query
          x-aliyun-apigateway-backend-name: backendQuery
      ...

4. 基于阿里云api网关扩展的Swagger示例

第三节我们对Api网关的Swagger扩展进行了介绍,这里我们提供一个后端服务为Mock类型的示例帮助用户对Swagger文件的配置有更明确的了解

swagger: '2.0'
basePath: /
info:
  version: '0.9'
  title: Aliyun Api Gateway Swagger Sample
schemes:
  - http
paths:
  '/mock/get/mapping/{userId}':
    get:
      operationId: case1
      schemes:
        - http
        - https
      x-aliyun-apigateway-paramater-handling: MAPPING
      x-aliyun-apigateway-backend:
        type: MOCK
        mockResult: mock resul sample
        mockStatusCode :200
        mockHeaders :
          - name : server
            value : mock
          - name : proxy
            value : GW
      parameters:
        - name: userId
          in: path
          required: true
          type: string
      responses:
        '200':
          description: 200 description
        '400':
          description: 400 description

5. 通过导入Swagger创建和更新Api

Api网关可以通过两种方式导入Swagger并创建或者更新Api,分别为:Aliyun Openapi导入和web控制台导入。

5.1 ImportSwagger接口使用

通过调用ImportSwagger接口,可以通过导入符合阿里云swagger规范的文本内容创建API:

请求参数

名称 类型 是否必须 描述
Action String 操作接口名,取值:ImportSwagger
GroupId String swagger将被导入的分组编号
Overwrite Boolean 是否覆盖现有API。覆盖检测条件为: API的http请求类型+后端请求路径相同
DataFormat String swagger文本格式:
  • json
  • yaml
Data String swagger文本内容。详情请查看:通过Swagger导入API

返回参数

名称 数据类型 描述
RequestId String 本次请求编号
Success ApiImportSwaggerSuccess 本次所有通过swagger导入成功的API信息
Failed ApiImportSwaggerFailed 本次所有通过swagger导入失败的API信息

对象说明

ApiImportSwaggerSuccess

对象属性名称 对象属性类型 描述
Path String 创建API时配置的请求路径
Method String 创建API时配置的http方法
ApiUid String 导入成功的API的UID
ApiOperation String 该API是创建(CREATE)或修改(MODIFY)

ApiImportSwaggerFailed

对象属性名称 对象属性类型 描述
Path String 创建API时配置的请求路径
Method String 创建API时配置的http方法
ErrorMsg String 创建API时返回的错误信息

5.2 通过Web控制台导入Swagger

在Api管理界面,我们可以找到导入Swagger的入口,见下图:

点击导入Swagger进入Swagger导入界面,按照填写相应信息就可以完成Swagger的导入工作。控制台右方会返回最终api的创建结果:
控制台swagger

6. 总结

以上就是阿里云Api网关对swagger文件的支持情况。现在用户可以通过配置基于Aliyun Api网关扩展的Swagger文件创建Api,可以方便的将本地Swagger文件管理的api托管至Api网关管理。但当前Swagger扩展并不能完全覆盖Api网关的所有功能,后续还会进行完善和升级,提高更好的便利性和友好度。


Reference

目录
相关文章
|
1月前
|
数据可视化 Linux API
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
|
1月前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
3天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
4天前
|
存储 Java API
阿里云oss简介和使用流程
本文档介绍了如何准备阿里云OSS(对象存储服务)并开始使用它。首先,需要注册阿里云账号并进行实名认证,然后购买OSS资源包。在阿里云控制台中,可以创建和管理OSS存储空间(称为“Bucket”)。接着,文章简要介绍了阿里云OSS,它是一个基于云端的对象存储服务,提供高可靠性、高性能、低成本和易于使用的特性。 在阿里云OSS控制台,用户可以进行文件的上传和下载操作。通过API,开发者可以使用各种编程语言(如Java)来创建、删除Bucket以及上传、下载和删除文件。例如,Java代码示例展示了如何创建Bucket、上传文件、删除文件以及下载文件到本地的操作。
|
4天前
|
消息中间件 传感器 网络协议
阿里云MQTT简介和使用流程
以下是内容的摘要: 该文主要介绍了在阿里云上搭建 MQTT 服务器的步骤。首先,需要注册阿里云账号并进行实名认证。然后,购买阿里云 MQTT 实例,选择合适的类型、地域、连接和消息限制。接着,创建产品和设备,命名并上线,获取 MQTT 连接的相关信息,包括 ProductKey、DeviceName 和 DeviceSecret。通过提供的 MQTT.fx 工具,设置 MQTT 客户端连接参数,包括 Broker 地址、端口、用户名和密码。最后,使用 MQTT.fx 测试连接,实现数据的上报和接收,验证 MQTT 服务器的配置是否成功。
|
8天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
21天前
|
机器学习/深度学习 前端开发 API
实现以图搜货功能,淘宝API开发实战分享
实现以图搜货功能,淘宝API开发实战分享
24 0
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 02 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
1月前
|
自然语言处理 API 语音技术
Python加百度语音API实现文字转语音功能
Python加百度语音API实现文字转语音功能
52 0
|
1月前
|
算法 Java 开发工具
使用阿里云KMS产品针对 Springboot 接口参数加密解密功能
针对Springboot里面使用开源工具使用加解密,替换成阿里云KMS产品进行加解密;
121 1

热门文章

最新文章