All Products
Search
Document Center

API Gateway:Impor definisi Swagger yang diperluas

Last Updated:Aug 26, 2026

Ekstensi Swagger dari API Gateway didasarkan pada Swagger 2.0. Gunakan ekstensi ini untuk menulis definisi Swagger bagi API Anda, lalu impor file tersebut ke API Gateway guna membuat atau memperbarui API secara batch. API Gateway telah dikonfigurasi sebelumnya untuk Swagger 2.0 dan mendukung sebagian besar spesifikasi Swagger, meskipun terdapat beberapa perbedaan.

Metode impor Swagger

Swagger adalah spesifikasi untuk mendeskripsikan definisi API. Spesifikasi ini banyak digunakan untuk mendefinisikan dan menggambarkan API layanan aplikasi backend. API Gateway mendukung pengimporan file Swagger 2.0 untuk membuat API. Anda dapat memanggil operasi ImportSwagger atau melakukannya melalui Konsol.

Di panel navigasi kiri Konsol API Gateway, pilih API Management > API List, lalu klik Import Swagger di pojok kanan atas halaman.

Bagian berikut menjelaskan ekstensi API Gateway untuk Swagger dan memberikan contoh penggunaannya.

Penting

Semua parameter dan nilai dalam Swagger bersifat case-sensitive.

Ekstensi Swagger

Ekstensi Swagger dari API Gateway terutama memperluas Operation Object asli Swagger untuk menambahkan kemampuan autentikasi, pemetaan parameter, dan layanan backend. Tersedia pula ekstensi untuk metode ANY guna menangkap permintaan HTTP apa pun. Semua ekstensi diawali dengan x-aliyun-apigateway-. Bagian berikut menjelaskan setiap ekstensi.

Dukungan untuk cakupan global

Ekstensi berikut mendukung definisi pada cakupan global. Jika suatu ekstensi tidak didefinisikan dalam cakupannya sendiri, nilai yang didefinisikan pada cakupan global akan diterapkan secara otomatis. Namun, jika ekstensi tersebut didefinisikan dalam cakupannya sendiri, nilai dalam cakupan tersebut yang berlaku.

  • x-aliyun-apigateway-backend

  • x-aliyun-apigateway-api-market-enable

  • x-aliyun-apigateway-api-force-nonce-check

  • x-aliyun-apigateway-parameter-handling

  • x-aliyun-apigateway-auth-type

x-aliyun-apigateway-auth-type: Jenis otorisasi

x-aliyun-apigateway-auth-type berlaku untuk Operation Object dan menentukan jenis otorisasi API.

Nilai yang valid:

  • APP (default): otorisasi aplikasi oleh Alibaba Cloud API Gateway.

  • ANONYMOUS: akses anonim.

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

x-aliyun-apigateway-api-market-enable: Dukungan Alibaba Cloud Marketplace

x-aliyun-apigateway-api-market-enable berlaku untuk Operation Object dan menentukan apakah API dapat dipublikasikan ke Alibaba Cloud Marketplace.

Nilai yang valid:

  • true

  • false (default)

    Contoh:
...
paths:
  'path/':
    get:
      x-aliyun-apigateway-api-market-enable: true
...

x-aliyun-apigateway-api-force-nonce-check: Pemeriksaan NONCE

x-aliyun-apigateway-api-force-nonce-check berlaku untuk Operation Object dan menentukan apakah pemeriksaan NONCE diberlakukan untuk API.

Nilai yang valid:

  • true

  • false (default)

    Contoh:
...
paths:
  'path/':
    get:
      x-aliyun-apigateway-api-force-nonce-check: true
...

x-aliyun-apigateway-parameter-handling: Pemetaan parameter

x-aliyun-apigateway-parameter-handling berlaku untuk Operation Object dan menentukan cara parameter permintaan dipetakan ke parameter layanan backend. Jika hubungan pemetaan diatur ke PASSTHROUGH, Parameter Object tidak mendukung properti x-aliyun-apigateway-backend-location dan x-aliyun-apigateway-backend-name.

Nilai yang valid:

  • PASSTHROUGH (default): meneruskan parameter permintaan.

  • MAPPING: memetakan parameter permintaan.

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

x-aliyun-apigateway-backend: Jenis layanan backend

x-aliyun-apigateway-backend berlaku untuk Operation Object dan mengonfigurasi informasi tentang layanan backend. Properti yang tersedia bergantung pada jenis layanan backend, seperti dijelaskan pada bagian berikut.

Jenis layanan backend: HTTP

Gunakan jenis layanan backend HTTP untuk mengonfigurasi alamat layanan backend secara langsung. Jenis ini umumnya digunakan ketika alamat backend dapat diakses langsung.

Tabel berikut menjelaskan properti jenis layanan backend HTTP.

PropertyTypeDescription
typestringWajib. Nilainya adalah HTTP.
addressstringWajib. Menentukan alamat layanan backend.
pathstringOpsional. Menentukan path layanan backend. Variabel path didukung. Secara default, nilainya sama dengan root path.
methodstringWajib. Metode permintaan backend.
timeoutintOpsional. Nilai default: 10000. Nilai yang valid: 500 hingga 30000.

Contoh:

...
x-aliyun-apigateway-backend:
  type: HTTP
  address: 'http://www.aliyun.com'
  path: '/builtin/echo'
  method: get
  timeout: 10000
...

Jenis layanan backend: HTTP-VPC

Gunakan jenis layanan backend HTTP-VPC ketika layanan backend berada di dalam VPC. Anda harus terlebih dahulu membuat otorisasi VPC, lalu mengimpornya berdasarkan namanya. Untuk informasi selengkapnya, lihat Buat API yang menggunakan resource di VPC sebagai layanan backend.

Tabel berikut menjelaskan properti jenis layanan backend HTTP-VPC.

PropertyTypeDescription
typestringWajib. Nilainya adalah HTTP-VPC.
vpcAccessNamestringWajib. Nama instans terhubung-VPC yang digunakan oleh layanan backend.
pathstringOpsional. Menentukan path layanan backend. Variabel path didukung. Secara default, nilainya sama dengan root path.
methodstringWajib. Metode permintaan backend.
timeoutintOpsional. Nilai default: 10000. Nilai yang valid: 500 hingga 30000.

Contoh:

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

Jenis layanan backend: FC

Gunakan jenis layanan backend FC ketika layanan backend API Gateway adalah Function Compute.

Tabel berikut menjelaskan properti jenis layanan backend FC.

PropertyTypeDescription
typestringWajib. Nilainya adalah FC.
fcRegionstringWajib. Wilayah tempat Function Compute berada.
serviceNamestringWajib. Nama layanan Function Compute.
functionNamestringWajib. Nama fungsi Function Compute.
arnstringOpsional. Otorisasi RAM untuk Function Compute.

Contoh:

...
x-aliyun-apigateway-backend:
  type: FC
  fcRegion: cn-shanghai
  serviceName: fcService
  functionName: fcFunction
  arn: acs:ram::111111111:role/aliyunapigatewayaccessingfcrole
...

Jenis layanan backend: MOCK

Gunakan jenis layanan backend MOCK untuk mensimulasikan respons yang telah Anda tentukan sebelumnya.

Tabel berikut menjelaskan properti jenis layanan backend MOCK.

PropertyTypeDescription
typestringWajib. Nilainya adalah MOCK.
mockResultstringWajib. Respons yang disimulasikan.
mockStatusCodeintegerOpsional.
mockHeadersHeaderOpsional.

Tabel berikut menjelaskan properti tipe Header.

PropertyTypeDescription
namestringWajib.
valuestringWajib.

Contoh:

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

x-aliyun-apigateway-constant-parameters: Parameter konstan

x-aliyun-apigateway-constant-parameters berlaku untuk Operation Object dan mendefinisikan parameter konstan layanan backend.

Tabel berikut menjelaskan properti parameter konstan.

PropertyTypeDescription
backendNamestringWajib. Nama parameter backend.
valuestringWajib. Nilai konstan.
locationstringWajib. Lokasi penyimpanan parameter konstan. Nilai yang valid: query dan header.
descriptionstringOpsional. Menjelaskan konstanta.

Contoh:

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

x-aliyun-apigateway-system-parameters: Parameter sistem backend

x-aliyun-apigateway-system-parameters berlaku untuk Operation Object dan mendefinisikan parameter sistem layanan backend API.

Tabel berikut menjelaskan properti parameter sistem backend.

PropertyTypeDescription
systemNamestringWajib. Nama parameter sistem.
backendNamestringWajib. Nama parameter backend.
locationstringWajib. Lokasi penyimpanan parameter konstan. Nilai yang valid: query dan header.

Contoh:

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

x-aliyun-apigateway-backend-location: Lokasi parameter backend

x-aliyun-apigateway-backend-location berlaku untuk Parameter Object dan menentukan lokasi parameter dalam permintaan layanan backend setelah pemetaan parameter. Properti ini hanya berlaku ketika x-aliyun-apigateway-parameter-handling: MAPPING diatur.

Nilai yang valid:

  • path

  • header

  • query

  • formData

    Contoh:
...
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
...

x-aliyun-apigateway-backend-name: Nama parameter backend

x-aliyun-apigateway-backend-name berlaku untuk Parameter Object dan menentukan nama parameter dalam permintaan layanan backend setelah pemetaan parameter. Properti ini hanya berlaku ketika x-aliyun-apigateway-parameter-handling: MAPPING diatur.

Contoh:

...
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
...

x-aliyun-apigateway-query-schema: Skema parameter kueri

x-aliyun-apigateway-query-schema berlaku untuk Parameter Object dan mendefinisikan model untuk parameter kueri. Anda dapat menggunakan ekstensi ini ketika parameter bertipe String dan didefinisikan sebagai parameter kueri.

Contoh:

...
parameters:
  - name: event_info
    in: query
    required: true
    type: string
    x-aliyun-apigateway-query-schema:
      $ref: "#/definitions/EvnetInfo"
...

x-aliyun-apigateway-any-method: Metode ANY

x-aliyun-apigateway-any-method berlaku untuk Path Item Object dan memungkinkan API menerima permintaan HTTP jenis apa pun.

Contoh:

...
paths:
  'path/':
    x-aliyun-apigateway-any-method:
    ...
...

x-aliyun-apigateway-app-code-type: Autentikasi AppCode

x-aliyun-apigateway-app-code-type berlaku untuk Operation Object dan menentukan apakah API mendukung autentikasi AppCode.

Nilai yang valid:

  • DEFAULT (default)

  • DISABLE: menonaktifkan autentikasi AppCode.

  • HEADER: meneruskan AppCode dalam header permintaan.

  • HEADER_QUERY: meneruskan AppCode dalam header permintaan atau parameter kueri.

    Contoh:
...
paths:
  'path/':
    get:
      x-aliyun-apigateway-app-code-type: HEADER
...

Perbedaan dari spesifikasi Swagger

API Gateway dan spesifikasi Swagger memiliki perbedaan berikut dalam mendefinisikan API. Perbedaan ini secara langsung memengaruhi cara Anda menggunakan fitur impor Swagger.

Pemetaan antara tipe parameter Swagger dan tipe API Gateway asli

Swagger typeAPI Gateway typeParameter validasi dan aturan yang didukung
type: integer, format: int32Intminimum, maximum
type: integer, format: int64Longminimum, maximum
type: number, format: floatFloatminimum, maximum
type: number, format: doubleDoubleminimum, maximum
type: stringStringmaxLength, enumValues, pattern
type: boolean, format: booleanBoolean-

Dukungan untuk field consumes

Jika file konfigurasi Swagger berisi parameter formData, Anda harus mengonfigurasi node consumes. API Gateway saat ini hanya mendukung tipe application/x-www-form-urlencoded.

consumes:
  - application/x-www-form-urlencoded

Batasan pada definisi Swagger

Impor Swagger mendukung definisi model, tetapi implementasinya berbeda dari spesifikasi Swagger asli. Definisi model terutama digunakan untuk menghasilkan kit pengembangan perangkat lunak (SDK). Oleh karena itu, batasan berikut ditambahkan di atas spesifikasi Swagger asli:

  • Tag schema dalam Swagger hanya mendukung tipe $ref.

  • Model dalam bagian definitions Swagger hanya mendukung definisi model bertipe object.

  • Jika model dalam bagian definitions Swagger berisi definisi array, referensi $ref harus digunakan bersama tag title. Secara default, tipe array dihasilkan sebagai ArrayList saat pembuatan SDK.

Contoh Swagger

Contoh berikut merupakan definisi Swagger lengkap yang menggunakan ekstensi Swagger API Gateway. Gunakan contoh ini sebagai titik awal saat Anda mendefinisikan API sendiri.

Catatan

Contoh ini hanya untuk referensi.

Contoh Swagger: Layanan backend HTTP

swagger: '2.0'
basePath: /
info:
  version: '0.9'
  title: Aliyun Api Gateway Swagger Sample
schemes:
  - http
  - https
x-aliyun-apigateway-parameter-handling: MAPPING
x-aliyun-apigateway-api-market-enable: true
x-aliyun-apigateway-api-force-nonce-check: true
x-aliyun-apigateway-backend:
  type: HTTP
  address: 'http://www.aliyun.com'
  method: get
  timeout: 10000
paths:
  '/http/get/mapping/{userId}':
    get:
      operationId: case1
      schemes:
        - http
        - https
      x-aliyun-apigateway-parameter-handling: MAPPING
      x-aliyun-apigateway-api-market-enable: true
      x-aliyun-apigateway-auth-type: ANONYMOUS
      parameters:
        - name: userId
          in: path
          required: true
          type: string
        - name: swaggerQuery
          in: query
          required: false
          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-aliyun-apigateway-backend-location: query
          x-aliyun-apigateway-backend-name: backendQuery
      x-aliyun-apigateway-constant-parameters:
        - backendName: swaggerConstant
          value: swaggerConstant
          location: header
          description: description of swagger
      x-aliyun-apigateway-system-parameters:
        - systemName: CaAppId
          backendName: appId
          location: header
      responses:
        '200':
          description: 200 description
        '400':
          description: 400 description
  '/echo/test/post/{userId}':
    post:
      operationId: testpost
      schemes:
        - http
        - https
      x-aliyun-apigateway-parameter-handling: MAPPING
      x-aliyun-apigateway-backend:
        type: HTTP
        address: 'http://www.aliyun.com'
        method: post
        timeout: 10000
      consumes:
        - application/x-www-form-urlencoded
      parameters:
        - name: userId
          required: true
          in: path
          type: string
        - name: swaggerQuery1
          in: query
          required: false
          default: '123465'
          type: integer
          format: int32
          minimum: 0
          maximum: 100
          x-aliyun-apigateway-enum: 1,2,3
        - name: swaggerQuery2
          in: query
          required: false
          type: string
          x-aliyun-apigateway-backend-location: header
          x-aliyun-apigateway-backend-name: backendHeader
          x-aliyun-apigateway-query-schema:
            $ref: '#/definitions/AiGeneratePicQueryVO'
        - 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
        - name: swaggerFormdata
          in: formData
          required: true
          type: string
      responses:
        '200':
          description: 200 description
          schema:
            $ref: '#/definitions/ResultOfGeneratePicturesVO'
        '400':
          description: 400 description
    x-aliyun-apigateway-any-method:
      operationId: case2
      schemes:
        - http
        - https
      x-aliyun-apigateway-parameter-handling: MAPPING
      x-aliyun-apigateway-backend:
        type: HTTP
        address: 'http://www.aliyun.com'
        path: '/builtin/echo/{abc}'
        method: post
        timeout: 10000
      parameters:
        - name: userId
          in: path
          required: false
          default: '123465'
          type: integer
          format: int32
          minimum: 0
          maximum: 100
          x-aliyun-apigateway-backend-name: abc
          x-aliyun-apigateway-backend-location: path
      responses:
        '200':
          description: 200 description
        '400':
          description: 400 description
definitions:
  AiGeneratePicQueryVO:
    type: object
    properties:
      transactionId:
        type: string
        description: asynchronous task ID
  GeneratePictureVO:
    type: object
    properties:
      id:
        type: integer
        format: int64
        description: image ID
      name:
        type: string
        description: image name
  GeneratePicturesVO:
    type: object
    properties:
      failSize:
        type: integer
        format: int64
        description: number of failures
      list:
        type: array
        description: image list
        items:
          $ref: '#/definitions/GeneratePictureVO'
          title: GeneratePictureVO
      successSize:
        type: integer
        format: int32
        description: number of successes
      totalSize:
        type: number
        format: float
        description: total number of requests
  ResultOfGeneratePicturesVO:
    type: object
    properties:
      model:
        description: response content
        $ref: '#/definitions/GeneratePicturesVO'
        title: GeneratePicturesVO
      requestId:
        type: string
        description: request ID

Contoh Swagger: Layanan backend HTTP-VPC

swagger: '2.0'
basePath: /
info:
  version: '0.9'
  title: Aliyun Api Gateway Swagger Sample
schemes:
  - http
  - https
paths:
  '/http/get/mapping/{userId}':
    get:
      operationId: case1
      schemes:
        - http
        - https
      x-aliyun-apigateway-parameter-handling: MAPPING
      x-aliyun-apigateway-backend:
        type: HTTP-VPC
        vpcAccessName: vpcName1
        path: '/builtin/echo/{userId}'
        method: get
        timeout: 10000
      parameters:
        - name: userId
          in: path
          required: true
          type: string
        - name: swaggerQuery
          in: query
          required: false
          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-aliyun-apigateway-backend-location: query
          x-aliyun-apigateway-backend-name: backendQuery
      responses:
        '200':
          description: 200 description
        '400':
          description: 400 description
  '/echo/test/post':
    post:
      operationId: testpost
      schemes:
        - http
        - https
      x-aliyun-apigateway-parameter-handling: MAPPING
      x-aliyun-apigateway-backend:
        type: HTTP-VPC
        vpcAccessName: vpcName2
        path: '/builtin/echo'
        method: post
        timeout: 10000
      consumes:
        - application/x-www-form-urlencoded
      parameters:
        - name: swaggerQuery1
          in: query
          required: false
          default: '123465'
          type: integer
          format: int32
          minimum: 0
          maximum: 100
        - name: swaggerQuery2
          in: query
          required: false
          type: string
          x-aliyun-apigateway-backend-location: header
          x-aliyun-apigateway-backend-name: backendHeader
        - 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
        - name: swaggerFormdata
          in: formData
          required: true
          type: string
      responses:
        '200':
          description: 200 description
        '400':
          description: 400 description
    x-aliyun-apigateway-any-method:
      operationId: case2
      schemes:
        - http
        - https
      x-aliyun-apigateway-parameter-handling: PASSTHROUGH
      x-aliyun-apigateway-backend:
        type: HTTP-VPC
        vpcAccessName: vpcName3
        path: '/builtin/echo'
        method: post
        timeout: 10000
      responses:
        '200':
          description: 200 description
        '400':
          description: 400 description

Contoh Swagger: Layanan backend Function Compute

swagger: '2.0'
basePath: /
info:
  version: '0.9'
  title: Aliyun Api Gateway Swagger Sample
schemes:
  - http
  - https
paths:
  '/http/get/mapping/{userId}':
    get:
      operationId: case1
      schemes:
        - http
        - https
      x-aliyun-apigateway-parameter-handling: MAPPING
      x-aliyun-apigateway-backend:
        type: FC
        fcRegion: cn-shanghai
        serviceName: fcService
        functionName: fcFunction
        arn: acs:ram::111111111:role/aliyunapigatewayaccessingfcrole
      parameters:
        - name: userId
          in: path
          required: true
          type: string
      responses:
        '200':
          description: 200 description
        '400':
          description: 400 description

Contoh Swagger: Layanan backend MOCK

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-parameter-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