

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan definisi OpenAPI untuk HTTP APIs di API Gateway
<a name="http-api-open-api"></a>

Anda dapat menentukan HTTP API Anda dengan menggunakan file definisi OpenAPI 3.0. Kemudian Anda dapat mengimpor definisi ke API Gateway untuk membuat API. Untuk mempelajari lebih lanjut tentang ekstensi API Gateway ke OpenAPI, lihat. [Ekstensi OpenAPI untuk API Gateway](api-gateway-swagger-extensions.md)

## Mengimpor API HTTP
<a name="http-api-import"></a>

Anda dapat membuat API HTTP dengan mengimpor file definisi OpenAPI 3.0.

Untuk bermigrasi dari REST API ke HTTP API, Anda dapat mengekspor REST API Anda sebagai file definisi OpenAPI 3.0. Kemudian impor definisi API sebagai HTTP API. Untuk mempelajari lebih lanjut tentang mengekspor REST API, lihat[Ekspor REST API dari API Gateway](api-gateway-export-api.md). 

**catatan**  
HTTP APIs mendukung AWS variabel yang sama dengan REST APIs. Untuk mempelajari selengkapnya, lihat [AWS variabel untuk impor OpenAPI](import-api-aws-variables.md).

### Impor informasi validasi
<a name="http-api-import.validation"></a>

Saat Anda mengimpor API, API Gateway menyediakan tiga kategori informasi validasi.

**Info**  
Properti valid sesuai dengan spesifikasi OpenAPI, tetapi properti itu tidak didukung untuk HTTP. APIs  
Misalnya, cuplikan OpenAPI 3.0 berikut menghasilkan info tentang impor karena HTTP APIs tidak mendukung validasi permintaan. API Gateway mengabaikan `schema` bidang `requestBody` dan.  

```
"paths": {
  "/": {
    "get": {
      "x-amazon-apigateway-integration": {
        "type": "AWS_PROXY",
        "httpMethod": "POST",
        "uri": "arn:aws:lambda:us-east-2:123456789012:function:HelloWorld",
        "payloadFormatVersion": "1.0"
      },
      "requestBody": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Body"
            }
          }
        }
      }
    }
  }
  ...
},
"components": {
  "schemas": {
    "Body": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        }
      }
    }
    ...
  }
  ...
}
```

**Peringatan**  
Properti atau struktur tidak valid sesuai dengan spesifikasi OpenAPI, tetapi tidak memblokir pembuatan API. Anda dapat menentukan apakah API Gateway harus mengabaikan peringatan ini dan terus membuat API, atau berhenti membuat API pada peringatan.  
Dokumen OpenAPI 3.0 berikut menghasilkan peringatan tentang impor karena HTTP APIs hanya mendukung proxy Lambda dan integrasi proxy HTTP.  

```
"x-amazon-apigateway-integration": {
  "type": "AWS",
  "httpMethod": "POST",
  "uri": "arn:aws:lambda:us-east-2:123456789012:function:HelloWorld",
  "payloadFormatVersion": "1.0"
}
```

**Kesalahan**  
Spesifikasi OpenAPI tidak valid atau salah bentuk. API Gateway tidak dapat membuat sumber daya apa pun dari dokumen yang salah format. Anda harus memperbaiki kesalahan, dan kemudian coba lagi.  
Definisi API berikut menghasilkan kesalahan pada impor karena HTTP hanya APIs mendukung spesifikasi OpenAPI 3.0.  

```
{
  "swagger": "2.0.0",
  "info": {
    "title": "My API",
    "description": "An Example OpenAPI definition for Errors/Warnings/ImportInfo",
    "version": "1.0"
  }
  ...
}
```
Sebagai contoh lain, sementara OpenAPI memungkinkan pengguna untuk mendefinisikan API dengan beberapa persyaratan keamanan yang dilampirkan pada operasi tertentu, API Gateway tidak mendukung ini. Setiap operasi hanya dapat memiliki satu otorisasi IAM, otorisasi Lambda, atau otorisasi JWT. Mencoba memodelkan beberapa persyaratan keamanan menghasilkan kesalahan.

### Impor API dengan menggunakan AWS CLI
<a name="http-api-import.example"></a>

Perintah [import-api](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/import-api.html) berikut mengimpor file `api-definition.json` definisi OpenAPI 3.0 sebagai API HTTP:

**Example**  

```
aws apigatewayv2 import-api --body file://api-definition.json
```

**Example**  
Anda dapat mengimpor contoh definisi OpenAPI 3.0 berikut untuk membuat API HTTP.  

```
{
  "openapi": "3.0.1",
  "info": {
    "title": "Example Pet Store",
    "description": "A Pet Store API.",
    "version": "1.0"
  },
  "paths": {
    "/pets": {
      "get": {
        "operationId": "GET HTTP",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pets"
                }
              }
            }
          }
        },
        "x-amazon-apigateway-integration": {
          "type": "HTTP_PROXY",
          "httpMethod": "GET",
          "uri": "http://petstore.execute-api.us-west-1.amazonaws.com/petstore/pets",
          "payloadFormatVersion": 1.0
        }
      },
      "post": {
        "operationId": "Create Pet",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewPet"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "200 response",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NewPetResponse"
                }
              }
            }
          }
        },
        "x-amazon-apigateway-integration": {
          "type": "HTTP_PROXY",
          "httpMethod": "POST",
          "uri": "http://petstore.execute-api.us-west-1.amazonaws.com/petstore/pets",
          "payloadFormatVersion": 1.0
        }
      }
    },
    "/pets/{petId}": {
      "get": {
        "operationId": "Get Pet",
        "parameters": [
          {
            "name": "petId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pet"
                }
              }
            }
          }
        },        
        "x-amazon-apigateway-integration": {
          "type": "HTTP_PROXY",
          "httpMethod": "GET",
          "uri": "http://petstore.execute-api.us-west-1.amazonaws.com/petstore/pets/{petId}",
          "payloadFormatVersion": 1.0
        }
      }
    }
  },
  "x-amazon-apigateway-cors": {
    "allowOrigins": [
      "*"
    ],
    "allowMethods": [
      "GET",
      "OPTIONS",
      "POST"
    ],
    "allowHeaders": [
      "x-amzm-header",
      "x-apigateway-header",
      "x-api-key",
      "authorization",
      "x-amz-date",
      "content-type"
    ]
  },
  "components": {
    "schemas": {
      "Pets": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Pet"
        }
      },
      "Empty": {
        "type": "object"
      },
      "NewPetResponse": {
        "type": "object",
        "properties": {
          "pet": {
            "$ref": "#/components/schemas/Pet"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "Pet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "price": {
            "type": "number"
          }
        }
      },
      "NewPet": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/PetType"
          },
          "price": {
            "type": "number"
          }
        }
      },
      "PetType": {
        "type": "string",
        "enum": [
          "dog",
          "cat",
          "fish",
          "bird",
          "gecko"
        ]
      }
    }
  }
}
```

# Ekspor HTTP APIs dari API Gateway
<a name="http-api-export"></a>

Setelah membuat API HTTP, Anda dapat mengekspor definisi OpenAPI 3.0 API Anda dari API Gateway. Anda dapat memilih tahap untuk mengekspor, atau mengekspor konfigurasi terbaru API Anda. Anda juga dapat mengimpor definisi API yang diekspor ke API Gateway untuk membuat API lain yang identik. Untuk mempelajari lebih lanjut tentang mengimpor definisi API, lihat[Mengimpor API HTTP](http-api-open-api.md#http-api-import).

## Ekspor definisi OpenAPI 3.0 dari sebuah tahap dengan menggunakan CLI AWS
<a name="http-api-export.stage.example"></a>

Perintah [export-api](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/export-api.html) berikut mengekspor definisi OpenAPI dari tahap API yang diberi nama ke file YAMAL `prod` bernama. `stage-definition.yaml` File definisi yang diekspor menyertakan [ekstensi API Gateway](api-gateway-swagger-extensions.md) secara default.

```
aws apigatewayv2 export-api \
    --api-id api-id  \
    --output-type YAML  \
    --specification OAS30 \
    --stage-name prod \
    stage-definition.yaml
```

## Ekspor definisi OpenAPI 3.0 dari perubahan terbaru API Anda dengan menggunakan CLI AWS
<a name="http-api-export.latest.example"></a>

Perintah [export-api](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/export-api.html) berikut mengekspor definisi OpenAPI dari API HTTP ke file JSON bernama. `latest-api-definition.json` Karena perintah tidak menentukan tahapan, API Gateway mengekspor konfigurasi terbaru API Anda, apakah itu telah diterapkan ke panggung atau belum. File definisi yang diekspor tidak menyertakan [ekstensi API Gateway](api-gateway-swagger-extensions.md).

```
aws apigatewayv2 export-api \
    --api-id api-id  \
    --output-type JSON  \
    --specification OAS30 \
    --no-include-extensions \
    latest-api-definition.json
```

Untuk informasi selengkapnya, lihat [ExportAPI](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-exports-specification.html#apis-apiid-exports-specification-http-methods) di Referensi API *Amazon API Gateway Versi 2*.

## Ekspor definisi OpenAPI 3.0 menggunakan konsol API Gateway
<a name="http-api-export.console"></a>

Prosedur berikut menunjukkan cara mengekspor definisi OpenAPI dari API HTTP.

**Untuk mengekspor definisi OpenAPI 3.0 menggunakan konsol API Gateway**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih API HTTP.

1. Pada panel navigasi utama, di bawah **Kembangkan**, pilih **Ekspor**.

1. Pilih dari opsi berikut untuk mengekspor API Anda:  
![\[Opsi ekspor untuk HTTP APIs.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/export-http-api.png)

   1. Untuk **Sumber**, pilih sumber untuk definisi OpenAPI 3.0. Anda dapat memilih tahap untuk mengekspor, atau mengekspor konfigurasi terbaru API Anda.

   1. Aktifkan **Sertakan ekstensi API Gateway** untuk menyertakan [ekstensi API Gateway](api-gateway-swagger-extensions.md).

   1. Untuk **format Output**, pilih format output.

1. Pilih **Unduh**.