Bagian ini memberikan panduan untuk menambahkan dokumentasi inline ke API Anda. Sebagian besar API juga akan memiliki ringkasan, tutorial, dan dokumentasi referensi tingkat tinggi, yang berada di luar cakupan Panduan Desain ini. Untuk mengetahui informasi tentang API, resource, dan penamaan metode, lihat Konvensi Penamaan.
Format komentar dalam file proto
Tambahkan komentar ke file .proto
menggunakan format komentar //
Buffering Protokol biasa.
// Creates a shelf in the library, and returns the new Shelf.
rpc CreateShelf(CreateShelfRequest) returns (Shelf) {
option (google.api.http) = { post: "/v1/shelves" body: "shelf" };
}
Komentar dalam konfigurasi layanan
Selain menambahkan komentar dokumentasi ke file .proto
, Anda dapat menambahkan dokumentasi inline ke API dalam file konfigurasi layanan YAML-nya.
Dokumentasi dalam file ini akan lebih diprioritaskan daripada dokumentasi dalam .proto
jika elemen yang sama didokumentasikan dalam kedua file.
documentation:
summary: Gets and lists social activities
overview: A simple example service that lets you get and list possible social activities
rules:
- selector: google.social.Social.GetActivity
description: Gets a social activity. If the activity does not exist, returns Code.NOT_FOUND.
...
Anda mungkin perlu menggunakan pendekatan ini jika memiliki beberapa layanan yang menggunakan
file .proto
yang sama dan ingin memberikan dokumentasi
khusus layanan. Aturan dokumentasi YAML juga memungkinkan Anda menambahkan overview
yang lebih mendetail ke deskripsi API. Namun, secara umum, menambahkan
komentar dokumentasi ke .proto
lebih diutamakan.
Seperti halnya komentar .proto
, Anda dapat menggunakan Markdown untuk memberikan pemformatan tambahan dalam komentar file YAML.
Deskripsi API
Deskripsi API adalah frasa yang dimulai dengan kata kerja aktif yang
menjelaskan apa yang dapat Anda lakukan dengan API. Dalam file .proto
Anda, deskripsi API ditambahkan sebagai komentar ke service
yang sesuai, seperti dalam contoh berikut:
// Manages books and shelves in a simple digital library.
service LibraryService {
...
}
Berikut ini beberapa contoh deskripsi API lainnya:
- Berbagi pembaruan, foto, video, dan lain-lain dengan teman di seluruh dunia.
- Mengakses layanan machine learning yang dihosting di cloud yang memudahkan untuk mem-build aplikasi cerdas yang merespons aliran data.
Deskripsi aset
Deskripsi resource adalah kalimat parsial yang menjelaskan apa yang
direpresentasikan oleh resource tersebut. Jika Anda perlu menambahkan detail, gunakan kalimat
tambahan. Dalam file .proto
Anda, deskripsi resource ditambahkan sebagai
komentar ke jenis pesan yang sesuai, seperti dalam contoh berikut:
// A book resource in the Library API.
message Book {
...
}
Berikut adalah beberapa contoh deskripsi resource:
- Tugas di daftar tugas pengguna. Setiap tugas memiliki prioritas unik.
- Acara di kalender pengguna.
Deskripsi kolom dan parameter
Frasa kata benda yang menjelaskan definisi kolom atau parameter, seperti yang ditunjukkan pada contoh berikut:
- Jumlah topik dalam rangkaian ini.
- Akurasi koordinat lintang dan bujur, dalam meter. Harus positif.
- Tanda yang mengatur apakah nilai URL lampiran ditampilkan untuk
resource pengiriman dalam rangkaian ini. Nilai default untuk
series.insert
adalahtrue
. - Penampung untuk informasi pemungutan suara. Hanya ada saat informasi pemungutan suara direkam.
- Saat ini tidak digunakan atau tidak digunakan lagi.
Deskripsi kolom dan parameter harus menjelaskan nilai yang valid dan tidak valid. Perlu diingat bahwa engineer akan melakukan upaya terbaik untuk merusak layanan, dan tidak akan dapat membaca kode yang mendasarinya untuk mengklarifikasi informasi yang tidak jelas.
Untuk string, deskripsi harus menjelaskan sintaksis dan karakter yang diizinkan, serta encoding apa pun yang diperlukan. Contoh:
- 1-255 karakter dalam himpunan [A-a0-9]
- String jalur URL valid yang dimulai dengan / yang mengikuti konvensi RFC 2332. Panjang maksimal adalah 500 karakter.
Deskripsi harus menentukan nilai atau perilaku default apa pun, tetapi mungkin tidak menjelaskan nilai default yang pada dasarnya adalah null.
Jika nilai kolom bersifat wajib, hanya input, dan hanya output, nilai tersebut harus didokumentasikan di awal deskripsi kolom. Secara default, semua kolom dan parameter bersifat opsional. Contoh:
message Table {
// Required. The resource name of the table.
string name = 1;
// Input only. Whether to validate table creation without actually doing it.
bool validate_only = 2;
// Output only. The timestamp when the table was created. Assigned by
// the server.
google.protobuf.Timestamp create_time = 3;
// The display name of the table.
string display_name = 4;
}
Deskripsi metode
Deskripsi metode adalah kalimat yang menunjukkan efek yang dimiliki metode dan resource yang mengoperasikannya. Ini biasanya dimulai dengan kata kerja orang ketiga, present tense, mis., dalam bahasa Inggris, kata kerja yang berakhiran "s". Jika Anda perlu menambahkan lebih detail, gunakan kalimat tambahan. Berikut beberapa contohnya:
- Mencantumkan acara kalender untuk pengguna yang diautentikasi.
- Memperbarui acara kalender dengan data yang disertakan dalam permintaan.
- Menghapus data lokasi dari histori lokasi pengguna yang diautentikasi.
- Membuat atau memperbarui catatan lokasi di histori lokasi pengguna yang diautentikasi menggunakan data yang disertakan dalam permintaan. Jika resource lokasi sudah ada dengan nilai stempel waktu yang sama, data yang diberikan akan menimpa data yang ada.
Checklist untuk semua deskripsi
Pastikan setiap deskripsi singkat, tetapi lengkap, dan dapat dipahami
oleh pengguna yang tidak memiliki informasi tambahan tentang API. Dalam kebanyakan
kasus, ada banyak hal yang perlu disampaikan selain sekadar menyatakan kembali hal yang sudah jelas; misalnya,
deskripsi metode series.insert
tidak boleh hanya menyatakan
"Menyisipkan rangkaian". — meskipun penamaan Anda harus informatif, sebagian besar
pembaca membaca deskripsi karena mereka menginginkan lebih banyak informasi
daripada nama itu sendiri. Jika Anda tidak yakin apa lagi yang harus dikatakan
dalam deskripsi, coba jawab semua pertanyaan berikut yang
relevan:
- Apa ini?
- Apa yang akan dilakukan jika berhasil? Apa yang akan dilakukan jika gagal? Apa yang dapat menyebabkannya gagal, dan bagaimana?
- Apakah bersifat idempoten?
- Apa saja satuannya? (Contoh: meter, derajat, piksel.)
- Berapa kisaran nilai yang diterima? Apakah rentang tersebut inklusif atau eksklusif?
- Apa saja efek sampingnya?
- Bagaimana cara menggunakannya?
- Kesalahan umum apa yang dapat menyebabkannya rusak?
- Apakah selalu ada? (Misalnya: "Penampung untuk informasi pemilihan suara. Ditampilkan hanya saat informasi pemungutan suara direkam.")
- Apakah alat ini memiliki setelan default?
Konvensi
Bagian ini mencantumkan beberapa konvensi penggunaan untuk deskripsi dan
dokumentasi tekstual. Misalnya, gunakan "ID" (huruf besar semua), bukan "ID" atau
"id" saat membahas ID. Gunakan "JSON" bukan "Json" atau "json" saat merujuk ke format data tersebut. Tampilkan semua nama kolom/parameter
di code font
. Masukkan nilai string literal di code font
dan
tanda kutip.
- ID
- JSON
- RPC
- REST
property_name
atau"string_literal"
true
/false
Tingkat persyaratan
Untuk menetapkan ekspektasi atau tingkat persyaratan status, gunakan istilah: harus, tidak boleh, wajib, harus, tidak boleh, harus, tidak boleh, direkomendasikan, mungkin, dan opsional.
Artinya didefinisikan dalam RFC 2119. Anda mungkin ingin menyertakan pernyataan dari abstrak RFC dalam dokumentasi API.
Tentukan istilah yang memenuhi persyaratan Anda sekaligus memberi developer fleksibilitas. Jangan gunakan istilah absolut seperti harus ketika opsi lain secara teknis berfungsi di API Anda.
Gaya bahasa
Seperti dalam konvensi penamaan kami, sebaiknya gunakan kosakata dan gaya yang sederhana dan konsisten saat menulis komentar dokumen. Komentar harus dapat dipahami oleh pembaca yang tidak berbicara dalam bahasa Inggris, jadi hindari jargon, bahasa gaul, metafora yang kompleks, referensi budaya pop, atau apa pun yang sulit diterjemahkan. Gunakan gaya yang ramah dan profesional yang berbicara langsung kepada developer yang membaca komentar Anda, dan tuliskan sesingkat mungkin. Ingat, sebagian besar pembaca ingin mengetahui cara melakukan sesuatu dengan API Anda, bukan membaca dokumentasi Anda.