Belajar Pengaturcaraan Rust · Pelajaran

Takrif Protobuf dan Perkhidmatan

Terangkan API anda dalam proto.

Pelajaran 1 daripada 413 langkah

Takrif Protobuf dan Perkhidmatan ialah pelajaran Belajar Pengaturcaraan Rust percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Belajar Pengaturcaraan Rust, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Belajar Pengaturcaraan Rust merangkumi sejumlah 4 pelajaran.

Mengapa gRPC dan Protobuf

gRPC ialah rangka kerja RPC berprestasi tinggi yang dibina berasaskan HTTP/2 dan Protocol Buffers. Dalam Rust, crate tonic melaksanakan gRPC dari hujung ke hujung.

Protobuf ialah bahasa takrifan antara muka (IDL). Anda menerangkan mesej dan perkhidmatan sekali dalam .proto, kemudian penjana kod menghasilkan rintihan klien dan pelayan yang ditaip dengan kukuh.

Anatomi Fail .proto

Setiap fail proto mengisytiharkan versi sintaks dan pakej. Pakej menamakan ruang jenis yang dijana dan mengelakkan perlanggaran.

Gunakan proto3 untuk tonic. Nama pakej dipetakan kepada laluan modul Rust selepas penjanaan.

syntax = "proto3";

package greeter.v1;

Mentakrifkan Mesej

Mesej ialah rekod bertip. Setiap medan mempunyai jenis, nama dan nombor medan unik yang digunakan untuk pengekodan pada wayar.

Nombor medan mesti stabil: jangan gunakan semula atau nomborkan semula medan selepas data wujud, kerana tindakan itu memutuskan keserasian.

message HelloRequest {
  string name = 1;
  int32 age = 2;
}

Jenis Skalar dan Pemetaan Rust

Skalar Protobuf dipetakan kepada jenis Rust melalui prost. string menjadi String, int32 menjadi i32, bool menjadi bool dan bytes menjadi Vec<u8>.

Dalam proto3, setiap skalar mempunyai nilai lalai (rentetan kosong, 0, false); ia tidak bersifat pilihan melainkan ditandakan sedemikian.

message Metric {
  string label = 1;
  double value = 2;
  bool active = 3;
}

Mentakrifkan Perkhidmatan

Sebuah service mengumpulkan kaedah RPC. Setiap rpc mengisytiharkan nama kaedah, mesej permintaan dan mesej respons.

tonic menjana trait pelayan dan struct klien daripada blok ini. Melaksanakan trait tersebut ialah cara anda menyediakan tingkah laku.

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloReply {
  string message = 1;
}

Empat Jenis Kaedah RPC

gRPC menyokong empat bentuk penstriman: tunggal, penstriman pelayan, penstriman klien dan penstriman dua hala.

Anda menandakan strim dengan kata kunci stream pada bahagian permintaan atau respons, atau kedua-duanya.

service Chat {
  rpc Unary (Msg) returns (Msg);
  rpc ServerStream (Msg) returns (stream Msg);
  rpc ClientStream (stream Msg) returns (Msg);
  rpc BiDi (stream Msg) returns (stream Msg);
}

Enum dalam Protobuf

Enum disokong oleh integer. Dalam proto3, nilai pertama mesti bernombor 0 dan bertindak sebagai nilai lalai.

prost menjana enum Rust serta pembantu untuk menukar daripada i32 asas, kerana nilai yang tidak diketahui boleh tiba melalui wayar.

enum Status {
  STATUS_UNKNOWN = 0;
  STATUS_ACTIVE = 1;
  STATUS_BANNED = 2;
}

Medan Bersarang dan Berulang

Medan repeated ialah senarai dan dipetakan kepada Vec<T> dalam Rust. Mesej boleh bersarang atau dirujuk menggunakan nama.

Ini membolehkan anda memodelkan koleksi dan muatan gabungan tanpa upacara tambahan.

message Order {
  string id = 1;
  repeated Item items = 2;
}

message Item {
  string sku = 1;
  int32 qty = 2;
}

Jenis Empty dan Jenis Diketahui Umum

Untuk kaedah yang menerima atau mengembalikan tiada apa-apa, import google/protobuf/empty.proto dan gunakan Empty.

Jenis diketahui umum yang lain termasuk Timestamp dan Duration. tonic menyediakan takrifan ini supaya anda boleh mengimportnya dalam binaan anda.

import "google/protobuf/empty.proto";

service Health {
  rpc Ping (google.protobuf.Empty) returns (google.protobuf.Empty);
}

Penversionan dengan Pakej

Meletakkan versi dalam pakej, seperti greeter.v1, membolehkan anda mengembangkan API dengan selamat. Perubahan yang memecahkan keserasian dimasukkan ke dalam greeter.v2 sementara v1 terus memberikan perkhidmatan.

Konvensyen ini memastikan modul Rust yang dijana kekal kemas: greeter::v1 dan greeter::v2 wujud bersama.

package greeter.v1;
// later, a parallel file:
// package greeter.v2;

Peraturan Keserasian Medan

Menambah medan baharu dengan nombor baharu serasi ke belakang; klien lama akan mengabaikannya. Membuang medan berisiko melainkan anda reserve nombor dan namanya.

Tempahan menghalang sesiapa daripada menggunakan semula nombor medan yang telah dihentikan dan merosakkan penyahkodan.

message User {
  reserved 3, 5;
  reserved "legacy_token";
  string id = 1;
  string email = 2;
}

Semakan Pantas

Uji pemahaman anda tentang takrifan perkhidmatan proto3.

Imbas Kembali

Anda telah mentakrifkan perkhidmatan dan mesej dalam proto3: nombor medan yang stabil, pemetaan skalar kepada Rust, enum, medan berulang dan bersarang, empat bentuk RPC, jenis diketahui umum serta penversionan melalui pakej.

Seterusnya, anda akan menukarkan takrifan ini kepada kod Rust dengan tonic-build.

Percuma untuk bermula

Pelajari Rust dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
39
Pelajaran
144

Soalan Lazim

Adakah pelajaran “Takrif Protobuf dan Perkhidmatan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Belajar Pengaturcaraan Rust, termasuk “Takrif Protobuf dan Perkhidmatan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Belajar Pengaturcaraan Rust merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Takrif Protobuf dan Perkhidmatan”?

Terangkan API anda dalam proto. Anda berlatih Belajar Pengaturcaraan Rust menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Belajar Pengaturcaraan Rust?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Belajar Pengaturcaraan Rust di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Takrif Protobuf dan Perkhidmatan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Belajar Pengaturcaraan Rust ini?

Ya. Setiap pelajaran Belajar Pengaturcaraan Rust menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Takrif Protobuf dan Perkhidmatan
  2. Menjana Kod dengan tonic-build
  3. Melaksanakan Pelayan gRPC
  4. Membuat Panggilan daripada Klien gRPC
← Kembali ke Belajar Pengaturcaraan Rust