gRPC & High Performance APIs · Pelajaran

Definisi Skema Protobuf

Pelajari cara mendefinisikan pesan dan layanan menggunakan sintaks Protocol Buffers (Protobuf) untuk pengetikan yang kuat.

Pelajaran 1 dari 411 langkah

Definisi Skema Protobuf adalah pelajaran gRPC & High Performance APIs gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar gRPC & High Performance APIs, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus gRPC & High Performance APIs mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

What are Protocol Buffers?

Welcome! In this lesson, we'll dive into Protocol Buffers, often called Protobuf. It's a key technology for gRPC.

  • Protobuf is a language-neutral, platform-neutral, extensible mechanism for serializing structured data. Think of it as a highly efficient way to define and exchange data.
  • It's like JSON or XML, but smaller, faster, and simpler.
  • gRPC uses Protobuf to define the service interface and the structure of the payload messages.

The .proto File

Protobuf schemas are defined in special files ending with the .proto extension. These files act as contracts for your data.

  • Every .proto file starts with a syntax declaration, usually syntax = "proto3";. This tells the Protobuf compiler which version of the syntax to use.
  • It's crucial for forward and backward compatibility.
syntax = "proto3";

// Your Protobuf definitions go here

Defining Your First Message

In Protobuf, a message is a structured record of information. It's similar to a class in object-oriented programming or a struct in C.

You define a message using the message keyword, followed by its name and a body containing its fields.

syntax = "proto3";

message MyMessage {
  // fields will go here
}

Fields, Types & Numbers

Inside a message, you define fields, each with a specific data type and a unique field number.

  • Data Type: Specifies the type of data (e.g., string, int32, bool).
  • Field Name: A unique identifier for the field within the message.
  • Field Number: A unique, positive integer tag (from 1 to 229-1). These numbers are critical for identifying fields in the binary format and must remain stable for compatibility.

Common Scalar Data Types

Protobuf supports a range of scalar data types. Here are some of the most common ones:

  • int32, int64: Integer numbers.
  • float, double: Floating-point numbers.
  • bool: Boolean (true/false).
  • string: UTF-8 encoded text.
  • bytes: Raw byte sequences.

Choose the type that best fits your data to optimize storage and transmission.

Example: A Simple Person Message

Let's define a Person message with a few common fields. Notice the unique field numbers assigned to each field.

These numbers are like unique IDs for your data pieces. If you change a field's name, its number must stay the same for older systems to understand it.

syntax = "proto3";

message Person {
  string name = 1;
  int32 age = 2;
  bool is_active = 3;
}

Using Enums for Fixed Choices

Sometimes you need a field to have a value from a predefined list of options. This is where enums come in handy.

  • Enums define a set of named integer constants.
  • The first value in an enum must be 0, as it's the default value when a field isn't set.
syntax = "proto3";

enum UserRole {
  GUEST = 0;
  MEMBER = 1;
  ADMIN = 2;
}

Example: User Message with Role

Now, let's create a User message and include our UserRole enum as a field. This ensures that the user's role can only be one of the defined values.

It provides strong typing and prevents invalid data from being sent.

syntax = "proto3";

enum UserRole {
  GUEST = 0;
  MEMBER = 1;
  ADMIN = 2;
}

message User {
  string id = 1;
  string username = 2;
  UserRole role = 3;
}

Nesting Messages for Structure

For more complex data, you can nest messages within other messages. This helps organize your schema and represent hierarchical data naturally.

Think of it like having an object inside another object in programming languages.

syntax = "proto3";

message UserProfile {
  string email = 1;
  message Address {
    string street = 1;
    string city = 2;
    string zip_code = 3;
  }
  Address home_address = 2;
}

Quick Check: Protobuf Basics

Consider the following Protobuf message definition:

syntax = "proto3";

message Product {
  string name = 1;
  int32 price_cents = 2;
  bool in_stock = 3;
  enum ProductCategory {
    ELECTRONICS = 0;
    BOOKS = 1;
    CLOTHING = 2;
  }
  ProductCategory category = 4;
}

Recap: Protobuf Schema

Great job! You've learned the fundamentals of defining Protobuf schemas:

  • .proto Files: The contract for your data.
  • Messages: Structured data definitions, similar to classes.
  • Fields: Each has a type, name, and unique field number.
  • Scalar Types: Common types like string, int32, bool.
  • Enums: For predefined sets of values, starting with 0.
  • Nesting: Organizing complex data by embedding messages.

Next, we'll see how to turn these definitions into code!

Gratis untuk memulai

Belajar gRPC & High Performance APIs dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
12
Pelajaran
48

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Definisi Skema Protobuf” gratis?

Ya — teks lengkap “Definisi Skema Protobuf” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus gRPC & High Performance APIs, upgrade ke CoddyKit PRO. Kursus gRPC & High Performance APIs mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Definisi Skema Protobuf”?

Pelajari cara mendefinisikan pesan dan layanan menggunakan sintaks Protocol Buffers (Protobuf) untuk pengetikan yang kuat. Kamu berlatih gRPC & High Performance APIs dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai gRPC & High Performance APIs?

Tidak diperlukan pengalaman sebelumnya. gRPC & High Performance APIs di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Definisi Skema Protobuf” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran gRPC & High Performance APIs ini?

Ya. Setiap pelajaran gRPC & High Performance APIs menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Definisi Skema Protobuf
  2. Membuat Kode gRPC
  3. Layanan gRPC Unary Sederhana
  4. RPC Streaming: Server, Klien & Dua Arah
← Kembali ke gRPC & High Performance APIs