

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

# Model data untuk REST APIs
<a name="models-mappings-models"></a>

Di API Gateway, model mendefinisikan struktur data payload. Di API Gateway, model didefinisikan menggunakan [draf skema JSON](https://tools.ietf.org/html/draft-zyp-json-schema-04) 4. Objek JSON berikut adalah data sampel dalam contoh Pet Store.

```
{
    "id": 1,
    "type": "dog",
    "price": 249.99
}
```

Data berisi`id`,`type`, dan `price` hewan peliharaan. Model data ini memungkinkan Anda untuk:
+ Gunakan validasi permintaan dasar.
+ Buat template pemetaan untuk transformasi data.
+ Buat tipe data yang ditentukan pengguna (UDT) saat Anda membuat SDK.

![\[Contoh model data JSON untuk PetStore API.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/how-to-validate-requests.png)


Dalam model ini:

1. `$schema`Objek mewakili pengidentifikasi versi Skema JSON yang valid. Skema ini adalah draf Skema JSON v4.

1. `title`Objek adalah pengidentifikasi yang dapat dibaca manusia untuk model tersebut. Judul ini adalah`PetStoreModel`.

1.  Kata kunci `required` validasi membutuhkan`type`, dan `price` untuk validasi permintaan dasar.

1. Model `properties` tersebut adalah`id`,`type`, dan`price`. Setiap objek memiliki properti yang dijelaskan dalam model.

1. Objek hanya `type` dapat memiliki nilai`dog`,`cat`, atau`fish`.

1. Objek `price` adalah angka dan dibatasi dengan `minimum` 25 dan 500`maximum`.

## PetStore model
<a name="PetStore-model-text"></a>

```
1 {
2 "$schema": "http://json-schema.org/draft-04/schema#",
3  "title": "PetStoreModel",
4  "type" : "object",
5  "required" : [ "price", "type" ],
6  "properties" : {
7    "id" : {
8      "type" : "integer"
9    },
10    "type" : {
11      "type" : "string",
12      "enum" : [ "dog", "cat", "fish" ]
13    },
14    "price" : {
15      "type" : "number",
16      "minimum" : 25.0,
17      "maximum" : 500.0
18    }
19  }
20 }
```

Dalam model ini:

1. Pada baris 2, `$schema` objek mewakili pengenal versi Skema JSON yang valid. Skema ini adalah draf Skema JSON v4.

1. Pada baris 3, `title` objek adalah pengidentifikasi yang dapat dibaca manusia untuk model tersebut. Judul ini adalah`PetStoreModel`.

1.  Pada baris 5, kata kunci `required` validasi membutuhkan`type`, dan `price` untuk validasi permintaan dasar.

1.  Pada baris 6 - 17, modelnya adalah`id`,`type`, dan`price`. `properties` Setiap objek memiliki properti yang dijelaskan dalam model.

1. Pada baris 12, objek hanya `type` dapat memiliki nilai`dog`,`cat`, atau`fish`.

1. Pada baris 14 - 17, objek `price` adalah angka dan dibatasi dengan `minimum` 25 dan 500`maximum`.

## Membuat model yang lebih kompleks
<a name="api-gateway-request-validation-model-more-complex"></a>

 Anda dapat menggunakan `$ref` primitif untuk membuat definisi yang dapat digunakan kembali untuk model yang lebih panjang. Misalnya, Anda dapat membuat definisi yang disebut `Price` di `definitions` bagian yang menjelaskan `price` objek. Nilai `$ref` adalah `Price` definisi. 

```
{
  "$schema" : "http://json-schema.org/draft-04/schema#",
  "title" : "PetStoreModelReUsableRef",
  "required" : ["price", "type" ],
  "type" : "object",
  "properties" : {
    "id" : {
      "type" : "integer"
    },
    "type" : {
      "type" : "string",
      "enum" : [ "dog", "cat", "fish" ]
    },
    "price" : {
        "$ref": "#/definitions/Price"
    }
  },
  "definitions" : {
      "Price": {
        "type" : "number",
        "minimum" : 25.0,
        "maximum" : 500.0
            }
      }
}
```

Anda juga dapat mereferensikan skema model lain yang ditentukan dalam file model eksternal. Tetapkan nilai `$ref` properti ke lokasi model. Dalam contoh berikut, `Price` model didefinisikan dalam `PetStorePrice` model di API`a1234`.

```
{
  "$schema" : "http://json-schema.org/draft-04/schema#",
  "title" : "PetStorePrice",
  "type": "number",
  "minimum": 25,
  "maximum": 500
}
```

Model yang lebih panjang dapat merujuk `PetStorePrice` model.

```
{
  "$schema" : "http://json-schema.org/draft-04/schema#",
  "title" : "PetStoreModelReusableRefAPI",
  "required" : [ "price", "type" ],
  "type" : "object",
  "properties" : {
    "id" : {
      "type" : "integer"
    },
    "type" : {
      "type" : "string",
      "enum" : [ "dog", "cat", "fish" ]
    },
    "price" : {
        "$ref": "https://apigateway.amazonaws.com/restapis/a1234/models/PetStorePrice"
    }
  }
}
```

## Menggunakan model data keluaran
<a name="api-gateway-request-validation-output-model"></a>

Jika Anda mengubah data, Anda dapat menentukan model payload dalam respons integrasi. Model payload dapat digunakan saat Anda membuat SDK. Untuk bahasa yang diketik dengan kuat, seperti Java, Objective-C, atau Swift, objek sesuai dengan tipe data yang ditentukan pengguna (UDT). API Gateway membuat UDT jika Anda menyediakannya dengan model data saat Anda membuat SDK. Untuk informasi selengkapnya tentang transformasi data, lihat[Memetakan transformasi template untuk REST APIs di API Gateway](models-mappings.md).

Contoh berikut adalah data keluaran dari respons integrasi.

```
{
[
  {
    "description" : "Item 1 is a dog.",
    "askingPrice" : 249.99
  },
  {
    "description" : "Item 2 is a cat.",
    "askingPrice" : 124.99
  },
  {
    "description" : "Item 3 is a fish.",
    "askingPrice" : 0.99
  }
]
}
```

Contoh berikut adalah model payload yang menggambarkan data output.

```
{
"$schema": "http://json-schema.org/draft-04/schema#",
  "title": "PetStoreOutputModel",
  "type" : "object",
  "required" : [ "description", "askingPrice" ],
  "properties" : {
    "description" : {
      "type" : "string"
    },
    "askingPrice" : {
      "type" : "number",
      "minimum" : 25.0,
      "maximum" : 500.0
    }
  }
}
```

Dengan model ini, Anda dapat memanggil SDK untuk mengambil nilai `description` dan `askingPrice` properti dengan membaca properti `PetStoreOutputModel[i].description` dan`PetStoreOutputModel[i].askingPrice`. Jika tidak ada model yang disediakan, API Gateway menggunakan model kosong untuk membuat UDT default. 

## Langkah selanjutnya
<a name="api-gateway-request-validation-model-next-steps"></a>
+ Bagian ini menyediakan sumber daya yang dapat Anda gunakan untuk mendapatkan lebih banyak pengetahuan tentang konsep yang disajikan dalam topik ini.

  Anda dapat mengikuti tutorial validasi permintaan:
  + [Siapkan validasi permintaan menggunakan konsol API Gateway](api-gateway-request-validation-set-up.md#api-gateway-request-validation-setup-in-console)
  +  [Siapkan validasi permintaan dasar menggunakan AWS CLI](api-gateway-request-validation-set-up.md#api-gateway-request-validation-setup-cli)
  +  [Siapkan validasi permintaan dasar menggunakan definisi OpenAPI](api-gateway-request-validation-set-up.md#api-gateway-request-validation-setup-importing-swagger)
+  Untuk informasi selengkapnya tentang templat transformasi dan pemetaan data, [Memetakan transformasi template untuk REST APIs di API Gateway](models-mappings.md)