百度智能云

All Product Document

          API Gateway

          API Import and Export

          API Gateway supports API import and export. The export function currently only supports API gateway custom yaml format export. The import function supports API gateway custom yaml format import and swagger format import.

          The following describes the import and export functions of the API gateway.

          Export Function

          The export function currently only supports exporting in the yaml format customized by the API gateway. You can select the API you want to export in the API management interface of the console interface to export:

          image.png

          You can also export all the APIs of the entire group in the group management interface:

          image.png

          Import Function

          You can import API on the group management and API management pages:

          image.png

          The import function supports API gateway custom yaml format import and swagger format import. You can select the import mode when importing. The API gateway import function supports three modes, namely:

          • New mode: Ignore the conflicting API. Used to add an API in the group. If there is a conflict with an existing API, the import of the API will be ignored.
          • Overwrite mode: Overwrite the conflicting API. When importing an API, if there is a conflict with an existing API, the existing API will be overwritten. It can be used to restore group API snapshots and other scenarios.
          • Update mode: Only update existing APIs. In case of conflict, ignore the import of the corresponding API. To use this mode, you need to specify the API ID in the group for each API in the API definition to import.

          You can select the import mode according to your needs.

          API Gateway Custom Format Import

          For import and export, the API gateway has a set of custom yaml format. You can export the API and import it in another group. Then, you do not need to perform additional configuration or modification, just import it directly. In the import interface, you can select yaml format as the import format, that is, use API gateway custom yaml to import. The group name indicates the group you want to import API into:

          image.png

          Swagger Format yaml Import

          [Swagger](https://swagger.io/docs/specification/about/? spm=a2c4g.11186623.2.35.42ca38293zFQzI) is a specification used to describe API definitions and is widely used to define and describe APIs for back-end application services. Currently, API Gateway supports importing Swagger 2.0 files (currently only supports yaml format) to import APIs. In order to adapt to the API definition of the API gateway, we have extended Swagger. The Swagger extension of the API gateway is based on Swagger 2.0, which can create Swagger definitions of API entities and import Swagger into the API gateway for batch creation or update of API entities.

          This chapter mainly introduces the Swagger-based API gateway extension and provides corresponding examples to illustrate the usage.

          Swagger Extension Description

          The Swagger extension of the API Gateway is based on Swagger 2.0, which can create Swagger definitions of API entities, and import Swagger into the API Gateway to create or update API entities in batches.

          Swagger extension is mainly to extend swagger native Operation Object, adding extensions such as authentication, parameter mapping, and back-end services. In addition, an extension to handle any method is added to capture any http(s) request method. All extensions start with x-bce-apigw-, and the specific extension content is as follows:

          Necessary Extension

          This type of configuration is the configuration that the user must perform when importing the API in the API gateway.

          x-bce-apigw-backend-services

          Applied to Operation Object. Used to set back-end service information. The specific attributes are determined according to the back-end service type. Because the gateway supports multiple backends, multiple backend services of the same type can be configured. The backend services have multiple common attributes, such as path, type, etc., which are explained below for x-bce-apigw-backend-services.

          Public property (non-mock type)

          Attribute name Type Is it necessary to fill in Description
          type String Yes Configure the back-end request types, including HTTP, mock and websocket (please configure schemes to ws accordingly).
          path String Yes Configure the request path of the backend request, which is shared by multiple backends.
          method String Yes Configure the request method of the backend request, which is shared by multiple backends.
          timeout String No Configure the timeout time of the back-end service, which is shared by multiple back-ends.
          hosts List<SwaggerBackendServer> Yes Configure the specific content of the back-end service.

          Public property (mock type)

          Attribute name Type Is it necessary to fill in Description
          mockResult String Yes mock return result
          mockStatusCode String No mock status code
          mockHeaders List<MockHeader> No mock return header

          SwaggerBackendServer and MockHeader are describled as follows

          SwaggerBackendServer

          Attribute name Type Is it necessary to fill in Description
          subType String Yes Specific types of back-end services:
          INSTANCE: HTTP(s) or websocket instance
          VPC: vpc service
          BNS: bns service
          CFC: cfc service
          address String Yes Back-end service address:
          region String No Region, default DEFAULT
          weight int No Weight (default value -1)
          qps int No qps limit (default -1)

          MockHeader

          Attribute name Type Is it necessary to fill in Description
          key String Yes the key of the header
          value String Yes the value of the header

          Configuration example

          x-bce-apigw-backend-services:
            path: '/a' 
            timeout: 80000 
            method: any 
            type: HTTP 
            hosts: 
            - address: 'http://baidu.com' 
              qps: 200 
              region: DEFAULT 
              subType: INSTANCE 
          Optional Extension

          This part is extended as an optional extension. You can add it according to your API configuration. If you don't fill it in, the gateway will fill it with corresponding default values.

          x-bce-apigw-auth

          Applied to Operation Object. Used to specify the authorization type of the API.

          Sub-configuration item

          • None

          Value

          • ANONYMOUS: No verification
          • APP: APP's ak and sk verification (default)

          Example

          x-bce-apigw-auth:APP 
          x-bce-apigw-api-id

          Applied to Operation Object. The uuid of the API, the configuration takes effect when the import mode is update, and it is used to specify the updated api. It only takes effect in a single api configuration, and there is no global configuration.

          Sub-configuration item

          • None

          Value

          • API uuid, the uuid of the API to modify

          Example

          x-bce-apigw-api-id:GWAI-pxCkY5sLyMm
          x-bce-apigw-mkt-enable

          Applied to Operation Object. Used to specify whether releasing the API on the cloud market is allowed.

          Sub-configuration item

          • None

          Value

          • false: Not allowed (default)
          • true: Allowed

          Example

          x-bce-apigw-mkt-enable:true 
          x-bce-apigw-request-mode

          Applied to Operation Object. Used to specify the mapping relationship between query parameters and back-end service parameters. Without this configuration, when there is parameter configuration, the default is mapping; when there is no parameter configuration, the default is passthrough. The three self-options do not have to co-exist, and they can be configured as required.

          Sub-configuration item

          • path
          • query
          • header
          • body

          Value

          • PASSTHROUGH: Passthrough
          • MAPPING: Mapping

          Example

          x-bce-apigw-requestmode:
            query:PASSTHROUGH 
            header:MAPPING 
          x-bce-apigw-request-type

          Applied to Operation Object. Used to specify the mapping relationship between body parameters and back-end service parameters.

          Sub-configuration item

          • None

          Value

          • FORM (default): Indicate that the request body is in the "application/x-www-form-urlencoded" format.
          • STREAM: Indicate that the request body is in a non-form format. For example, if the request body is a binary file, etc., the gateway does not support mapping the body parameter of this format.

          Example

          x-bce-apigw-requestmode:FROM 
          x-bce-apigw-backend-params

          Applied to Operation Object. Constant parameters used to define back-end services.

          Sub-configuration item

          • constant-params: Constant parameters used to define the backend.
          • system-params: System parameters used to define the backend.

          Detailed description of the two configurations constant-params Configure

          Attribute name Type Is it necessary to fill in Description
          name String Yes Parameter name
          value String Yes value
          location String Yes Location
          type String Yes Parameter type

          system-params Configure

          Attribute name Type Is it necessary to fill in Description
          name String Yes Parameter name
          location String Yes Location
          type String Yes Parameter type

          Value

          None 

          Example

          x-bce-apigw-backend:
            constant-params:
              - name:constanttest 
                value:5 
                location:query 
                type:String 
            system-para:
              - name:systemtest 
                location:head 
                type:BceAppId 
          x-bce-apigw-backend-request-content-type

          Applied to Operation Object. content type used to define the backend request value. It takes effect only when the body mapping mode is MAPPING.

          Sub-configuration item

          • category
          • value

          Value

          • category Value:
               CLIENT (default): Use the content type of the client
              CUSTOM: Use the custom
              DEFAULT: Use the default gateway
          • value: Required when the category is selected as custom.
          x-bce-apigw-backend-response-content-type

          Applied to Operation Object. content type used to define the backend return value.

          Sub-configuration item

          • None

          Value

          • JSON (default): application/json;chartset=utf-8
          • TEXT: text/plain;chartset=utf-8
          • BINARY: application/octet-stream;chartset=utf-8
          • XML: application/xml;chartset=utf-8
          • HTML: text/html;chartset=utf-8

          Example

          x-bce-apigw-backend-response-content-type: JSON 
          x-bce-apigw-backend-mapping

          Applied to Parameter Object. Used to set the mapping of back-end request parameters. The sub-configurations, not all, are configured as required.

          Sub-configuration item

          • location: This attribute only takes effect when the sub-configuration item of x-bce-apigw-requestmode is configured as the MAPPING setting, and is used to set the parameter position in the back-end service request after parameter mapping. Value taken as: path、header、query.
          • name: This attribute only takes effect when the sub-configuration item of x-bce-apigw-requestmode is configured as the MAPPING setting, and is used to set the parameter name in the back-end service request after parameter mapping. If not set, use the same name as the request parameter.

          Value

          • Please see the description of the sub-configuration items above.

          Example

          x-bce-apigw-backend-mapping:
            location:query 
            name:newname 
          x-bce-apigw-request-param

          Applied to Parameter Object. Used to set the verification of gateway request parameters. The sub-configurations, not all, are configured as required.

          Sub-configuration item

          • fixed: Used to set the input parameter as a fixed value type. It shall not co-exist with the parameter attribute "required=true" at the same time. true is a fixed parameter.
          • fixed-value: Used to set the fixed value of the input parameter. It takes effect only when the sub-configuration item of x-bce-apigw-request-param is fixed to true. This configuration should not co-exist at the same time as the default value.
          • check: Used to set the parameter check of the input parameters.
          • json-check: Used to set the json verification of the input parameters.

          Value

          • Please see the description of the sub-configuration items above.

          Example

          x-bce-apigw-request-param:
            fixed:true 
            fixed-value:5
          x-bce-apigw-any-method:

          Applied to [Path Item Object](https://swagger.io/specification/v2/? spm=a2c4g.11186623.2.52.5f263829AU2YBY#pathItemObject), used to set the API to accept any type of http request.

          Sub-configuration item

          • None

          Value

          • None

          Example

          x-bce-apigw-any-method:
          x-bce-apigw-backend-error-msg

          Applied to Response Object, because the gateway requires that the wrong return must contain code, message and description. So for 4xx and 5xx returns, this field must be configured.

          Sub-configuration item

          • None

          Value

          • None

          Example

          x-bce-apigw-backend-error-msg: 400 error 

          Description

          • About the use of swagger's own fields: Please use the description field built in swagger for the description of the parameters; use the enum field built in swagger for the default value of the parameter. For the use of the above fields, please refer to swagger2.0 official documents: [swagger description about parameter](https://swagger.io/specification/v2/? spm=a2c4g.11186623.2.45.39023829txUozJ#ItemsObject).
          • The gateway only supports mapping body parameter in form format, and it does not support mapping but passthrough in other formats (json, binary files), etc. When the formdata type parameter exists in the Swagger configuration file, the consumes node needs to be configured. API Gateway now only supports application/x-www-form-urlencoded type. Other types of bodies should be adapted to swagger's body for marking, and the body should select passthrough.
          • For mapping configuration, when there is no specific configuration, with parameter configuration, the default is mapping; without parameter configuration, the default is passthrough.
          • The global parameter and response configuration is not currently supported. Please put these two configurations in the specific api.

          Type Conversion Instructions

          There are certain differences between the gateway and the Swagger specification in defining data types, including:

          swagger data type Gateway data type
          type:integer
          format:int32
          int
          type:integer
          format:int64
          long
          type:number
          format:float
          float
          type:number
          format:double
          double
          type:boolean
          format:Boolean
          boolean
          type:string String

          Overall Example

          In order to fully explain each extension, a complete API configuration example is now provided. You can refer to the example to use the extension field.

          swagger: '2.0' 
          basePath: / 
          info: 
            version: '0.9' 
            title: BCE Api Gateway Swagger Sample 
          schemes: 
            - http 
            - https 
          x-bce-apigw-auth: APP 
          x-bce-apigw-mkt-enable: false 
          x-bce-apigw-backend-services:
            path: '/a' 
            timeout: 80000 
            method: any 
            type: HTTP 
            hosts: 
            - address: 'http://baidu.com' 
              qps: 200 
              region: DEFAULT 
              subType: INSTANCE 
          paths: 
            '/swagger/apigw/get/{userId}': 
              get: 
                operationId: swaggerget 
                schemes: 
                  - http 
                  - https 
                x-bce-apigw-request-mode:
                  header: MAPPING 
                x-bce-apigw-mkt-enable: true 
                x-bce-apigw-api-id: GWAI-pxCkY5sLyMm
                x-bce-apigw-auth: APP 
                parameters: 
                  - name: userId 
                    in: path 
                    required: true 
                    type: string 
                  - name: swaggerQuery 
                    in: query 
                    required: false 
                    type: integer 
                    format: int32 
                    minimum: 0 
                    maximum: 100 
                    x-bce-apigw-request-param:
                      fixed: true 
                      fixed-value: 12
                  - name: swaggerHeader 
                    in: header 
                    required: false 
                    type: number 
                    format: double 
                    minimum: 0.1 
                    maximum: 0.5 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: backendQuery 
                x-bce-apigw-backend-params:
                  constant-params:
                    - name: swaggerConstant 
                      value: swaggerConstant 
                      location: header 
                      type: STRING 
                  system-params:
                    - name: BceAppId 
                      location: header 
                      type: BceAppId 
                x-bce-apigw-backend-response-content-type: JSON 
                x-bce-apigw-backend-services:
                  type: MOCK 
                  mockStatusCode: 200 
                  mockResult: 2 
                  mockHeaders: 
                  - name: mockHeader 
                    value: mock 
                responses: 
                  '200': 
                    description: 200 description 
                  '400': 
                    description: 400 description 
                    x-bce-apigw-backend-error-msg: 4XX error 
            '/swagger/apigw/postany/{userId}': 
              post: 
                operationId: swaggerpost 
                schemes: 
                  - http 
                  - https 
                x-bce-apigw-request-mode:
                  header: MAPPING 
                  query: MAPPING 
                consumes: 
                  - application/x-www-form-urlencoded
                parameters: 
                  - name: userId 
                    required: true 
                    in: path 
                    type: string 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: path2query 
                  - name: swaggerQuery1 
                    in: query 
                    required: false 
                    default: '1' 
                    type: integer 
                    format: int32 
                    minimum: 0 
                    maximum: 100 
                    enum: [1,2,3] 
                  - name: swaggerQuery2 
                    in: query 
                    required: false 
                    type: string 
                  - name: swaggerHeader 
                    in: header 
                    required: false 
                    type: number 
                    format: double 
                    minimum: 0.1 
                    maximum: 0.5 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: headtoquery 
                  - name: swaggerBody 
                    in: formData 
                    required: true 
                    type: string 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: bodytoquery 
                responses: 
                  '200': 
                    description: 200 description 
                  '400': 
                    description: 400 description 
                    x-bce-apigw-backend-error-msg: 4XX error 
              x-bce-apigw-any-method:
                operationId: swaggerany 
                x-bce-apigw-request-mode:
                  header: MAPPING 
                schemas: 
                  - http 
                  - https 
                x-bce-apigw-backend-services:
                  path: '/a/{userId}' 
                  timeout: 80000 
                  method: any 
                  type: HTTP 
                  hosts: 
                  - address: 'http://baidu.com' 
                    qps: 200 
                    region: DEFAULT 
                    subType: INSTANCE 
                parameters: 
                  - name: userId 
                    in: path 
                    required: true 
                    default: '123465' 
                    type: integer 
                    format: int32 
                    minimum: 0 
                    maximum: 100 
                  - name: swaggerHeader 
                    in: header 
                    required: false 
                    type: number 
                    format: double 
                    minimum: 0.1 
                    maximum: 0.5 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: anyheader 
                responses: 
                  '200': 
                    description: 200 description 
                  '400': 
                    description: 400 description 
                    x-bce-apigw-backend-error-msg: 4XX error 
            '/swagger/apigw/vpc/{userId}': 
              get: 
                operationId: vpc 
                schemes: 
                  - http 
                  - https 
                x-bce-apigw-request-mode:
                  header: MAPPING 
                x-bce-apigw-mkt-enable: true 
                x-bce-apigw-auth: APP 
                parameters: 
                  - name: userId 
                    in: path 
                    required: true 
                    type: string 
                  - name: swaggerQuery 
                    in: query 
                    required: false 
                    type: integer 
                    format: int32 
                    minimum: 0 
                    maximum: 100 
                    x-bce-apigw-request-param:
                      fixed: true 
                      fixed-value: 12
                  - name: swaggerHeader 
                    in: header 
                    required: false 
                    type: number 
                    format: double 
                    minimum: 0.1 
                    maximum: 0.5 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: backendQuery 
                x-bce-apigw-backend-params:
                  constant-params:
                    - name: swaggerConstant 
                      value: swaggerConstant 
                      location: header 
                      type: STRING 
                  system-params:
                    - name: BceAppId 
                      location: header 
                      type: BceAppId 
                x-bce-apigw-backend-response-content-type: JSON 
                x-bce-apigw-backend-services:
                  path: '/a/{userId}' 
                  timeout: 80000 
                  method: any 
                  type: HTTP 
                  hosts: 
                  - address: 'vpc-gk9p7gq8q6xf:192.168.1.1:8' 
                    qps: 200 
                    region: bj 
                    subType: VPC 
                responses: 
                  '200': 
                    description: 200 description 
                  '400': 
                    description: 400 description 
                    x-bce-apigw-backend-error-msg: 4XX error 
            '/swagger/apigw/websocket/{userId}': 
              get: 
                operationId: swaggerwesocket 
                schemes: 
                  - ws 
                x-bce-apigw-backend-services:
                  path: '/a' 
                  timeout: 80000 
                  method: get 
                  type: WEBSOCKET 
                  hosts: 
                  - address: 'ws://baidu.com' 
                    qps: 200 
                    region: DEFAULT 
                    subType: INSTANCE 
                x-bce-apigw-request-mode:
                  header: MAPPING 
                  query: MAPPING 
                consumes: 
                  - application/x-www-form-urlencoded
                parameters: 
                  - name: userId 
                    required: true 
                    in: path 
                    type: string 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: path2query 
                  - name: swaggerQuery1 
                    in: query 
                    required: false 
                    default: '1' 
                    type: integer 
                    format: int32 
                    minimum: 0 
                    maximum: 100 
                    enum: [1,2,3] 
                  - name: swaggerQuery2 
                    in: query 
                    required: false 
                    type: string 
                  - name: swaggerHeader 
                    in: header 
                    required: false 
                    type: number 
                    format: double 
                    minimum: 0.1 
                    maximum: 0.5 
                    x-bce-apigw-backend-mapping:
                      location: query 
                      name: headtoquery 
                responses: 
                  '200': 
                    description: 200 description 
                  '400': 
                    description: 400 description 
                    x-bce-apigw-backend-error-msg: 400 error 
          Previous
          Backend Key Management
          Next
          Calling Guide