Meningkatkan Performa

Dokumen ini membahas beberapa teknik yang dapat Anda gunakan untuk meningkatkan kinerja aplikasi Anda. Dalam beberapa kasus, contoh dari API lain yang diimplementasikan digunakan untuk menggambarkan ide-ide yang disajikan. Namun, konsep yang sama berlaku ke Display & Video 360 API.

Bekerja dengan resource parsial

Cara lain untuk meningkatkan performa panggilan API Anda adalah dengan meminta bagian dari data yang Anda minati. Hal ini memungkinkan aplikasi Anda menghindari transfer, penguraian, dan penyimpanan kolom yang tidak diperlukan, sehingga kolom sumber daya seperti jaringan, CPU, dan memori dengan lebih efisien.

Respons sebagian

Secara {i>default<i}, server mengirimkan kembali representasi penuh resource setelah memproses permintaan. Untuk kinerja yang lebih baik, Anda dapat meminta server untuk mengirim hanya kolom yang benar-benar Anda butuhkan dan sebagai gantinya akan mendapatkan respons sebagian.

Untuk meminta respons sebagian, gunakan parameter permintaan fields untuk menentukan kolom yang ingin dikembalikan. Anda dapat menggunakan parameter ini dengan permintaan apa pun yang menampilkan data respons.

Contoh

Contoh berikut menunjukkan penggunaan parameter fields dengan Layar & Video 360 API.

Permintaan sederhana: Permintaan GET HTTP ini menghilangkan parameter fields dan menampilkan resource lengkap.

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1

Respons resource lengkap: Data resource lengkap mencakup hal-hal berikut kolom, bersama dengan banyak bidang lainnya yang telah dihilangkan agar lebih singkat.

200 OK

{
 "advertisers": [
  {
   "name": "advertisers/1",
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  {
   "name": "advertisers/2",
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2",
   "entityStatus": "ENTITY_STATUS_ACTIVE",
   "updateTime": "2019-01-01T00:00:00.000000Z",
   "generalConfig": {
    "domainUrl": "http://example.com",
    "timeZone": "America/New_York",
    "currencyCode": "USD",
    "address": {
    }
   },
   "adServerConfig": {
    "thirdPartyOnlyConfig": {
    }
   },
   "creativeConfig": {
   },
   "dataAccessConfig": {
    "sdfConfig": {
     "sdfConfig": {
      "version": "VERSION_3_1"
     }
    }
   },
   "integrationDetails": {
   }
  },
  ...
 ],
 "nextPageToken": "..."
}

Permintaan respons sebagian: Permintaan berikut untuk resource yang sama menggunakan parameter fields untuk mengurangi jumlah data yang ditampilkan secara signifikan.

GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)

Respons sebagian: Sebagai respons terhadap permintaan di atas, server akan mengirimkan kembali yang berisi susunan pengiklan ringkas yang hanya menyertakan ID pengiklan, nama tampilan, dan properti ID partner milik setiap pengiklan, jika saat ini.

200 OK

{
 "advertisers": [
  {
   "advertiserId": "1",
   "partnerId": "1",
   "displayName": "Example Advertiser 1"
  },
  {
   "advertiserId": "2",
   "partnerId": "1",
   "displayName": "Example Advertiser 2"
  },
  ...
 ]
}

Perhatikan bahwa responsnya adalah objek JSON yang hanya menyertakan kolom yang dipilih dan objek induk yang melekat padanya.

Detail tentang cara memformat parameter fields akan dibahas berikutnya, diikuti oleh detail selengkapnya tentang apa yang sebenarnya dikembalikan dalam respons.

Ringkasan sintaksis parameter kolom

Format nilai parameter permintaan fields secara longgar didasarkan pada XPath sintaksis. Sintaks yang didukung diringkas di bawah ini, dan contoh tambahan adalah yang disediakan di bagian berikut.

  • Gunakan daftar yang dipisahkan koma untuk memilih beberapa kolom.

  • Gunakan a/b untuk memilih kolom b yang disusun bertingkat dalam kolom a; gunakan a/b/c untuk memilih kolom c yang disarangkan dalam b.

  • Gunakan sub-pemilih untuk meminta satu set sub-isian dari {i>array <i}atau objek dengan menempatkan ekspresi dalam tanda kurung "( )".

    Contoh: fields=advertisers(advertiserId,generalConfig/domainUrl) hanya menampilkan ID pengiklan dan URL domain untuk setiap elemen dalam pengiklan. Anda juga dapat menentukan satu sub-isian, di mana fields=advertisers(advertiserId) setara dengan fields=advertisers/advertiserId.

Contoh penggunaan parameter kolom lainnya

Contoh di bawah mencakup deskripsi tentang bagaimana nilai parameter fields mempengaruhi respons.

Identifikasi kolom yang ingin Anda tampilkan, atau buat pilihan kolom.

Nilai parameter permintaan fields adalah daftar kolom yang dipisahkan koma, dan setiap kolom ditentukan relatif terhadap {i>root <i}respons. Jadi, jika Anda melakukan operasi list, responsnya adalah kumpulan, dan umumnya mencakup berbagai sumber daya. Jika Anda melakukan operasi yang mengembalikan satu sumber daya, bidang ditentukan relatif terhadap sumber daya resource Anda Jika kolom yang Anda pilih adalah (atau merupakan bagian dari) array, server mengembalikan bagian yang dipilih dari semua elemen dalam array.

Berikut beberapa contoh tingkat koleksi:

Contoh Efek
advertisers Menampilkan semua elemen di kolom Array advertisers, termasuk semua {i>field<i} di setiap elemen, tetapi tidak ada {i>field<i} lain.
advertisers,nextPageToken Menampilkan kedua nextPageToken {i>field<i} dan semua elemen di Array advertisers.
advertisers/advertiserId Hanya menampilkan advertiserId untuk semua elemen dalam Array advertisers.

Setiap kali isian bertingkat dikembalikan, responsnya mencakup objek induk yang mencakupnya. Kolom induk tidak menyertakan {i>field<i} turunan lainnya kecuali mereka juga dipilih secara eksplisit.
advertisers/generalConfig/domainUrl Menampilkan kolom domainUrl untuk objek generalConfig, yang berada di bawah Array advertisers.

Berikut beberapa contoh tingkat resource:

Contoh Efek
advertiserId Menampilkan kolom advertiserId dari resource yang diminta.
generalConfig/domainUrl Menampilkan kolom domainUrl untuk objek generalConfig pada resource yang diminta.
Hanya minta bagian kolom tertentu menggunakan sub-pilihan.

Secara default, jika permintaan Anda menentukan kolom tertentu, server akan menampilkan objek atau elemen {i>array<i} secara keseluruhan. Anda dapat menentukan respons yang hanya mencakup sub-isian tertentu. Anda melakukannya menggunakan "( )" sub-selection, seperti pada contoh di bawah ini.

Contoh Efek
advertisers(advertiserId,generalConfig/domainUrl) Hanya mengembalikan nilai advertiserId dan generalConfig domainUrl untuk setiap elemen dalam advertisers .
Menangani respons sebagian

Setelah server memproses permintaan valid yang menyertakan kueri fields parameter ini, parameter akan mengirimkan kembali kode status HTTP 200 OK, bersama dengan layanan otomatis dan data skalabel. Jika parameter kueri fields mengalami error atau tidak valid, server mengembalikan kode status HTTP 400 Bad Request, bersama dengan error pesan yang memberi tahu Anda apa yang salah dengan pemilihan kolom (misalnya, "Invalid field selection a/b").