Bab ini akan membahas cara menggunakan Buffering Protokol dengan desain API. Untuk menyederhanakan pengalaman developer dan meningkatkan efisiensi runtime, gRPC API harus menggunakan Protocol Buffer versi 3 (proto3) untuk definisi API.
Protocol Buffers adalah Interface Definition Language (IDL) yang bersifat netral bahasa dan platform-netral sederhana untuk menentukan skema struktur data dan antarmuka pemrograman. Alat ini mendukung format kabel biner dan teks, serta berfungsi dengan banyak protokol kabel yang berbeda di platform yang berbeda.
Proto3 adalah versi terbaru dari Buffering Protokol dan menyertakan perubahan berikut dari proto2:
- Keberadaan kolom, yang juga dikenal sebagai
hasField
, dihapus secara default untuk kolom dasar. Kolom primitif yang tidak ditetapkan memiliki nilai default yang ditentukan bahasa.- Keberadaan kolom pesan masih tersedia, yang dapat diuji menggunakan metode
hasField
yang dihasilkan compiler, atau dibandingkan dengan null, atau nilai sentinel yang ditentukan oleh implementasi. - Mulai dari protobuf v3.14, kolom dasar dapat membedakan antara
nilai default dan nilai yang tidak ditetapkan dengan menggunakan
kata kunci
optional
, meskipun umumnya hal ini tidak disarankan.
- Keberadaan kolom pesan masih tersedia, yang dapat diuji menggunakan metode
- Nilai default yang ditetapkan pengguna untuk kolom tidak lagi tersedia.
- Definisi enum harus diawali dengan nilai enum nol.
- Kolom wajib diisi tidak lagi tersedia.
- Ekstensi tidak lagi tersedia. Sebagai gantinya, gunakan
google.protobuf.Any
.- Pengecualian khusus diberikan untuk
google/protobuf/descriptor.proto
karena alasan kompatibilitas mundur dan runtime.
- Pengecualian khusus diberikan untuk
- Sintaksis grup dihapus.
Alasan menghapus fitur ini adalah untuk membuat desain API lebih sederhana, lebih stabil, dan lebih berperforma tinggi. Misalnya, sering kali Anda perlu memfilter beberapa kolom sebelum mencatat pesan ke dalam log, misalnya menghapus informasi sensitif. Hal ini tidak dapat dilakukan jika kolom ini wajib diisi.
Lihat Buffering Protokol untuk informasi lebih lanjut.