Desain API terjadi di berkas spesifikasi Anda jauh sebelum kode apa pun diluncurkan. Aturan gaya yang Anda lupakan, perubahan yang merusak yang Anda lewatkan, skema yang menyimpang dari yang Anda luncurkan minggu lalu; semuanya membutuhkan biaya lebih untuk diperbaiki setelah fakta. Baris perintah menangkap masalah-masalah ini di mana mereka dimulai, dan melakukannya di CI tanpa perlu ada yang mengklik antarmuka pengguna.
Bagian ini membahas sisi sumber terbuka dari toolchain tersebut. Setiap alat di sini tersedia sumbernya di bawah lisensi permisif, gratis untuk dijalankan tanpa biaya kursi, dan sesuatu yang dapat Anda selenggarakan sendiri (self-host) atau sematkan ke versi yang Anda kontrol. Itu penting ketika desain API Anda berada di repositori Git dan Anda ingin pemeriksaan berjalan dengan cara yang sama di setiap laptop dan setiap pipeline. Jika Anda ingin gambaran yang lebih luas tentang bagaimana ini semua cocok, mulailah dengan panduan kami tentang cara mendesain API, lalu kembali ke sini untuk memilih CLI.
Anda akan mendapatkan enam alat, masing-masing dengan perintah instalasi nyata dan satu perintah yang menunjukkan cara kerjanya: linter untuk aturan gaya, alternatif berbasis Go yang cepat untuk itu, bundler yang juga memvalidasi, generator kode dan dokumen, serta dua alat untuk menangkap perubahan yang merusak antar versi spesifikasi. Spesifikasi OpenAPI adalah bahasa umum yang digunakan oleh semuanya, sehingga spesifikasi yang Anda lint dengan satu alat akan masuk dengan bersih ke alat berikutnya.
Satu catatan jujur di awal. Apidog ditampilkan di sini, tetapi bukan sumber terbuka; ini adalah produk komersial dengan tingkatan gratis, dan tidak melint spesifikasi Anda. Jadi, ini mendapatkan catatan samping yang akurat, bukan entri sumber terbuka. Alat-alat di bawah ini adalah toolchain desain sumber terbuka yang sebenarnya.
Apa yang membuat alat CLI sumber terbuka untuk desain API
Sumber terbuka adalah klaim spesifik, bukan sekadar 'vibe'. Untuk daftar ini, suatu alat memenuhi syarat jika tiga hal benar.
Pertama, lisensi. Harus berupa lisensi permisif atau copyleft yang nyata dan dapat Anda baca; MIT dan Apache-2.0 adalah dua yang paling sering Anda lihat di sini. Itulah yang memungkinkan Anda menggunakan alat ini dalam proyek komersial tanpa biaya lisensi atau jumlah kursi.
Kedua, self-hosting dan kontrol versi. Anda dapat menyertakan biner, menyematkan versi yang tepat, dan menjalankannya sepenuhnya secara offline di runner CI yang terisolasi udara. Tidak ada alat di sini yang 'menelepon ke rumah' atau memerlukan akun untuk melakukan pekerjaan intinya.
Ketiga, pemeliharaan dan komunitas. Repositori dengan komit terbaru, isu terbuka yang mendapatkan jawaban, dan changelog publik. Proyek yang terbengkalai masih bisa berlisensi MIT dan tetap merupakan pilihan yang buruk, jadi saya menandai status pemeliharaan di tempat yang relevan.
Setiap alat di bawah ini diperiksa terhadap ketiga hal tersebut. Di mana proyek sedang 'santai', Anda akan melihatnya disebut.
Spectral: linter gaya OpenAPI yang fleksibel
Spectral dari Stoplight adalah linter sumber terbuka referensi untuk deskripsi API, berlisensi Apache-2.0. Ia membaca ruleset (berkas YAML, JSON, atau JavaScript yang berisi daftar aturan Anda) dan menerapkannya ke dokumen OpenAPI 3.x, OpenAPI 2.0, AsyncAPI, dan Arazzo. Jika tim Anda memiliki panduan gaya API tertulis, Spectral adalah cara Anda membuatnya dapat dieksekusi.
npm install -g @stoplight/spectral-cli
spectral lint openapi.yaml
Secara default, ia dilengkapi ruleset oas yang menandai deskripsi yang hilang, contoh yang tidak valid, dan masalah struktural. Nilai sebenarnya muncul pada aturan kustom: memerlukan operationId pada setiap operasi, skema bersama pada respons kesalahan, konvensi penamaan pada path. Aturan-aturan itu ada di repositori Anda dan berjalan identik untuk setiap kontributor.
Terbaik untuk: menegakkan panduan gaya tim sebagai kode. Batasan jujur: Spectral memeriksa satu spesifikasi; ia tidak membandingkan dua versi, jadi pasangkan dengan alat diff untuk menangkap perubahan yang merusak.
vacuum: linter tercepat, pengganti langsung untuk ruleset Spectral
Jika Spectral adalah standar, vacuum adalah pilihan kecepatan. Ini adalah linter Go, berlisensi MIT, yang 100% kompatibel dengan ruleset Spectral. Jadi, Anda dapat mengarahkannya ke ruleset yang sama yang sudah Anda tulis dan mendapatkan hasil yang jauh lebih cepat pada spesifikasi besar, itulah yang Anda inginkan dalam hook pre-commit atau loop CI yang ketat.
brew install --cask daveshanley/vacuum/vacuum
vacuum lint -d openapi.yaml
Flag -d memberi Anda output detail per-aturan. vacuum juga melakukan lebih dari sekadar lint; ia menghasilkan laporan HTML dan dokumentasi dari spesifikasi yang sama. Karena ini adalah biner terkompilasi tunggal tanpa runtime Node, ia memulai dengan cepat dan masuk dengan bersih ke dalam kontainer.
Terbaik untuk: melint spesifikasi besar dengan cepat menggunakan ruleset yang sudah Anda miliki. Batasan jujur: ekosistem ruleset dan dokumen masih berpusat pada Spectral, jadi Anda sering menulis aturan terhadap model Spectral dan menjalankannya melalui vacuum. Itu adalah fitur, tetapi itu berarti Spectral masih merupakan hal yang pertama Anda pelajari.
Redocly CLI: lint ditambah bundle dalam satu biner
Redocly CLI berlisensi MIT dan mencakup pekerjaan yang sedikit berbeda. Ia melint, tetapi yang menonjol adalah bundle: ia mengambil spesifikasi yang terbagi di banyak berkas $ref (cara yang masuk akal untuk menjaga desain API yang besar tetap mudah dikelola) dan meratakannya menjadi satu dokumen untuk alat yang mengharapkan satu berkas. Ia juga menghasilkan dokumen referensi API dari hasil yang dibundel.
npm install -g @redocly/cli
redocly lint openapi.yaml
redocly bundle openapi.yaml -o dist/openapi.yaml
Memecah spesifikasi Anda menjadi berkas per-sumber daya menjaga perbedaan tetap mudah dibaca dan konflik gabungan tetap kecil, yang merupakan inti dari alur kerja desain API Git-native. bundle Redocly adalah langkah yang mengubah sumber multi-berkas itu kembali menjadi artefak tunggal yang dikonsumsi oleh CI, server mock, atau situs dokumen Anda.
Terbaik untuk: proyek spesifikasi multi-berkas yang membutuhkan bundling ditambah pass validasi. Batasan jujur: aturan lint default-nya lebih ringan daripada ruleset Spectral kustom penuh, jadi banyak tim menjalankan Redocly untuk bundling dan Spectral atau vacuum untuk penegakan gaya yang mendalam.
openapi-generator: mengubah desain menjadi klien, stub, dan dokumen
Desain belum selesai sampai orang lain dapat membangun di atasnya. openapi-generator adalah Apache-2.0 dan menghasilkan SDK klien, stub server, dan dokumentasi dari spesifikasi OpenAPI di puluhan bahasa. Memperlakukan spesifikasi sebagai sumber kebenaran dan menghasilkan sisanya adalah inti dari pendekatan schema-first, contract-driven, yang kami bahas dalam prinsip-prinsip desain API.
npm install -g @openapitools/openapi-generator-cli
openapi-generator-cli generate -i openapi.yaml -g typescript-axios -o ./client
Ganti -g typescript-axios dengan go, python, java, kotlin, atau generator lain yang didukung. Jalankan di CI pada setiap perubahan spesifikasi dan pustaka klien Anda tidak akan pernah menyimpang dari kontrak.
Terbaik untuk: menjaga kode dan dokumen yang dihasilkan selaras dengan desain. Batasan jujur: ia membutuhkan JDK untuk berjalan (JDK 11+), kode yang dihasilkan adalah titik awal yang sering Anda sesuaikan, dan kualitas generator bervariasi berdasarkan target bahasa. Periksa output sebelum Anda mengirimkannya.
oasdiff: tangkap perubahan yang merusak sebelum mencapai klien
Linter memberi tahu Anda apakah satu spesifikasi bersih. Ia tidak dapat memberi tahu Anda bahwa mengganti nama bidang baru saja merusak setiap klien di produksi. oasdiff adalah alat Go Apache-2.0 yang mengisi celah itu: berikan dua versi spesifikasi dan ia melaporkan perbedaannya, dan secara khusus perubahan yang merusak.
go install github.com/oasdiff/oasdiff@latest
oasdiff breaking old-openapi.yaml new-openapi.yaml
Perintah breaking hanya menampilkan perubahan yang merusak konsumen yang ada; changelog memberikan daftar yang mudah dibaca oleh manusia tentang semua yang bergeser, merusak atau tidak; diff memberikan delta yang dapat dibaca mesin secara penuh. Sambungkan oasdiff breaking ke pemeriksaan pull-request dan perubahan yang merusak akan menjadi build yang gagal alih-alih pager jam 3 pagi.
Terbaik untuk: mencegah perubahan yang merusak di CI. Batasan jujur: ia membandingkan spesifikasi, jadi hanya sebaik disiplin Anda dalam menjaga spesifikasi tetap mutakhir dengan API yang sebenarnya. Ia tidak melint gaya; gunakan bersama Spectral atau vacuum.
Optic: diff dan lint bersama, dengan peringatan pemeliharaan
Optic berlisensi MIT dan melakukan sesuatu yang lain pecah: ia melint dan melakukan diff OpenAPI dalam satu alat, membandingkan dua versi untuk menandai perubahan yang merusak sambil juga menerapkan aturan gaya. Ia bahkan dapat menghasilkan spesifikasi dari lalu lintas uji yang diamati.
npm install -g @useoptic/optic
optic diff old-openapi.yaml new-openapi.yaml --check
Inilah kejujuran yang harus disampaikan oleh daftar sumber terbuka: repositori publik Optic diarsipkan pada awal 2026 dan proyek ini tidak lagi dikelola secara aktif. Sumber MIT masih berjalan, jadi Anda dapat menyertakannya, tetapi Anda tidak akan mendapatkan aturan baru atau patch keamanan. Untuk deteksi perubahan yang merusak hari ini, oasdiff adalah opsi yang terpelihara; Optic tetap ada dalam daftar karena Anda masih akan menemuinya di pipeline yang ada.
Terbaik untuk: tim yang sudah menggunakannya, atau siapa pun yang menginginkan lint dan diff dalam satu CLI. Batasan jujur: tidak lagi dikelola sejak awal 2026; perlakukan sebagai warisan dan rencanakan jalur migrasi.
Di mana Apidog cocok (dan di mana tidak)
Apidog bukan sumber terbuka, dan tidak melint OpenAPI Anda atau menegakkan aturan gaya; Spectral, vacuum, dan Redocly adalah linter Anda, titik. Apa yang ditawarkan Apidog adalah trade-off yang berbeda: alih-alih menyatukan enam biner terpisah, tingkat gratisnya ditambah biner apidog-cli memberi Anda tempat terintegrasi untuk mendesain titik akhir dan skema data, lalu mengekspor hasilnya sebagai OpenAPI untuk dimasukkan kembali ke pemeriksaan sumber terbuka ini.
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog endpoint list
apidog export --format openapi -o openapi.yaml
CLI memiliki grup perintah untuk endpoint, schema, mock, dan import/export, sehingga Anda dapat membuat skrip desain API dari terminal dan menyerahkan spesifikasi yang diekspor ke openapi-generator atau oasdiff. Lihat panduan lengkap Apidog CLI untuk set perintah penuh. Pembingkaian jujur: Apidog adalah opsi komersial terintegrasi yang bekerja dengan baik dengan toolchain sumber terbuka, bukan pengganti linter dan bukan proyek sumber terbuka itu sendiri.
Bagaimana memilih
Sesuaikan alat dengan pekerjaan. Kebanyakan tim menjalankan dua atau tiga dari ini bersama-sama, bukan hanya satu.
| Alat | Terbaik untuk | Instalasi | Sumber terbuka? | Catatan |
|---|---|---|---|---|
| Spectral | Linting panduan gaya | npm i -g @stoplight/spectral-cli |
Ya (Apache-2.0) | Linter referensi; tulis aturan kustom |
| vacuum | Linting cepat dalam skala besar | brew install --cask daveshanley/vacuum/vacuum |
Ya (MIT) | Menjalankan ruleset Spectral, Go-cepat |
| Redocly CLI | Bundling + validasi | npm i -g @redocly/cli |
Ya (MIT) | Terbaik untuk spesifikasi $ref multi-berkas |
| openapi-generator | Generasi SDK / stub / dokumen | npm i -g @openapitools/openapi-generator-cli |
Ya (Apache-2.0) | Membutuhkan JDK 11+ |
| oasdiff | Deteksi perubahan yang merusak | go install github.com/oasdiff/oasdiff@latest |
Ya (Apache-2.0) | Dipelihara; gunakan dalam pemeriksaan PR |
| Optic | Lint + diff dalam satu | npm i -g @useoptic/optic |
Ya (MIT) | Repo diarsipkan awal 2026; warisan |
| Apidog CLI | Desain + ekspor terintegrasi | npm i -g apidog-cli |
Tidak (tingkat gratis) | Bukan linter; mengekspor OpenAPI |
Tumpukan praktis: Spectral atau vacuum untuk gaya, Redocly untuk bundling, oasdiff untuk perubahan yang merusak, dan openapi-generator untuk menghasilkan klien. Jika mempertahankan begitu banyak alat lebih dari yang ingin Anda miliki, platform terintegrasi mencakup bagian desain-dan-ekspor di satu tempat. Untuk pandangan yang lebih luas tentang lanskap perkakas di luar CLI, lihat panduan kami tentang alternatif Swagger untuk desain dan pengujian API dan dasar-dasarnya dalam cara mendesain API REST.
Ringkasan
Toolchain CLI sumber terbuka untuk desain API sudah matang dan gratis untuk dijalankan: Spectral dan vacuum melint, Redocly melakukan bundling, openapi-generator menghasilkan klien, dan oasdiff menjaga terhadap perubahan yang merusak, dengan Optic sebagai opsi warisan untuk dikenali. Sambungkan mereka ke CI dan kontrak API Anda akan diperiksa pada setiap push tanpa biaya per-kursi dan tanpa vendor lock-in.
Jika Anda lebih suka mendesain titik akhir dan skema dalam satu alat terintegrasi dan mengekspor OpenAPI yang bersih ke pipeline yang sama, Unduh Apidog dan coba apidog-cli; ini adalah pendamping komersial untuk tumpukan sumber terbuka, bukan pengganti linter Anda. Bagaimanapun, tujuannya sama: menangkap masalah desain di terminal, sebelum mencapai pengguna Anda.
