Sebagian besar tutorial desain API dimulai dari editor visual. Namun, jika definisi API Anda disimpan di Git, ditinjau melalui pull request, dan divalidasi di CI, workflow berbasis terminal lebih mudah diulang dan diotomatisasi. Anda dapat membuat kontrak API, memvalidasinya, menggabungkan file, dan menghasilkan stub server tanpa meninggalkan shell.
Pendekatan ini membuat setiap langkah eksplisit dan dapat diskrip. Rekan tim, CI, atau agen AI cukup menjalankan perintah yang sama untuk mereproduksi hasilnya.
Artikel ini membahas dua rute:
- Toolchain open-source: OpenAPI + Spectral + Redocly CLI + openapi-generator.
- Apidog CLI: mengelola skema, endpoint, dan autentikasi dalam satu proyek dari terminal.
Untuk dasar konseptual, baca panduan cara mendesain API dan mendesain REST API.
Jika menggunakan Apidog, instal CLI dan login terlebih dahulu. Panduan instalasi Apidog CLI menjelaskan npm install -g apidog-cli dan autentikasi dengan apidog login --with-token. Lihat juga panduan Apidog CLI lengkap untuk daftar kelompok perintah.
Rute open-source: buat, lint, gabungkan, hasilkan
Toolchain CLI klasik terdiri dari beberapa alat independen. Simpan spesifikasi OpenAPI di repository, lalu jalankan setiap alat sebagai tahap pipeline. Ini cocok untuk alur kerja desain API Git-native.
1. Buat dokumen OpenAPI
Mulai dari file YAML biasa, misalnya openapi.yaml:
openapi: 3.0.3
info:
title: Orders API
version: 1.0.0
paths:
/orders/{orderId}:
get:
operationId: getOrder
parameters:
- name: orderId
in: path
required: true
schema:
type: string
responses:
'200':
description: An order
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
components:
schemas:
Order:
type: object
required: [id, status]
properties:
id:
type: string
status:
type: string
enum: [pending, shipped, delivered]
Saat spesifikasi bertambah besar, pisahkan schema, path, dan parameter ke beberapa file menggunakan $ref. Struktur ini memudahkan review karena perubahan model dapat diperiksa secara independen.
Contoh struktur proyek:
api/
├── openapi.yaml
├── paths/
│ └── orders.yaml
└── schemas/
└── order.yaml
2. Lint dengan Spectral
Spesifikasi yang ditulis manual sering memiliki inkonsistensi: operationId hilang, respons tidak terdokumentasi, atau konvensi penamaan berbeda. Jalankan linter sebelum merge.
npm install -g @stoplight/spectral-cli
spectral lint openapi.yaml
Spectral menampilkan pelanggaran beserta nomor baris dan tingkat keparahannya. Di CI, cukup gunakan exit code untuk menggagalkan build ketika ada error.
Alternatifnya adalah Redocly CLI atau vacuum. Vacuum dapat digunakan sebagai linter yang kompatibel dengan Spectral. Apa pun alatnya, jadikan linting sebagai langkah pipeline tersendiri.
3. Gabungkan file dengan Redocly CLI
Tool seperti generator SDK atau publisher dokumentasi biasanya membutuhkan satu file OpenAPI mandiri. Gunakan redocly bundle untuk menyelesaikan semua $ref.
npm install -g @redocly/cli
redocly bundle openapi.yaml -o dist/openapi.bundled.yaml
Hasil dist/openapi.bundled.yaml dapat digunakan sebagai artefak untuk proses berikutnya.
Redocly juga menyediakan linting melalui redocly lint dan pratinjau dokumentasi. Lihat dokumentasi Redocly CLI untuk perintah lengkap.
4. Hasilkan stub server dengan openapi-generator
Setelah spesifikasi sudah bersih dan tergabung, hasilkan kode awal server atau SDK klien.
npm install -g @openapitools/openapi-generator-cli
openapi-generator-cli generate \
-i dist/openapi.bundled.yaml \
-g spring \
-o ./server
Ganti generator sesuai stack Anda:
# Python Flask
openapi-generator-cli generate \
-i dist/openapi.bundled.yaml \
-g python-flask \
-o ./server
# Go server
openapi-generator-cli generate \
-i dist/openapi.bundled.yaml \
-g go-server \
-o ./server
Rute ini memberi kontrol penuh: Anda memilih struktur file, aturan lint, format bundle, dan generator. Konsekuensinya, Anda perlu memelihara konfigurasi serta integrasi antaralat sendiri.
Rute Apidog CLI: desain dalam satu proyek
Alternatifnya adalah menyimpan skema, endpoint, autentikasi, mock, dan struktur folder dalam satu proyek yang dikelola melalui apidog-cli.
CLI ini menyediakan kelompok perintah untuk sumber daya API:
-
schemauntuk model data -
endpointuntuk operasi API -
folderuntuk organisasi endpoint -
security-schemeuntuk autentikasi -
importdanexportuntuk pertukaran format -
mockdan perintah proyek lainnya
Satu batasan penting: Apidog tidak berfungsi sebagai linter OpenAPI atau penegak style guide. Jika Anda memerlukan linting, tetap jalankan Spectral atau vacuum dalam pipeline. Apidog adalah produk komersial dengan tingkatan gratis, tetapi dapat mengurangi kebutuhan untuk merangkai sendiri berbagai bagian desain. Lihat alternatif Swagger untuk desain dan pengujian API untuk konteks pertukarannya.
1. Instal dan autentikasi
npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
Setiap perintah mengembalikan JSON terstruktur. Sebagian besar respons juga menyertakan agentHints.nextSteps, sehingga skrip atau agen dapat membaca hasilnya dan menentukan langkah berikutnya. Tambahkan --help pada perintah apa pun untuk melihat flag yang tersedia.
2. Definisikan model data dengan apidog schema
Model data yang dapat digunakan kembali sebaiknya menjadi sumber kebenaran tunggal. Konsepnya setara dengan components/schemas di OpenAPI.
apidog schema --help
apidog schema create --project <PROJECT_ID>
Karena output CLI berbentuk JSON, gunakan jq jika Anda perlu mengambil ID sumber daya untuk perintah berikutnya.
apidog schema create --project <PROJECT_ID> | jq -r '.data.id'
Jika sudah memiliki spesifikasi OpenAPI, impor langsung agar tidak perlu membuat ulang semua schema dan endpoint:
apidog import --project <PROJECT_ID> --file openapi.yaml
apidog import mendukung OpenAPI 3.x, Swagger 2.0, Postman, dan format Apidog.
3. Definisikan endpoint dengan apidog endpoint
Gunakan grup endpoint untuk membuat, memperbarui, dan memeriksa operasi API.
apidog endpoint --help
apidog endpoint list --project <PROJECT_ID>
apidog endpoint create --project <PROJECT_ID>
Output JSON dari endpoint list berguna untuk otomatisasi. Contohnya, Anda dapat menyimpan output per branch lalu membandingkannya untuk mendeteksi endpoint yang berubah atau hilang.
Kelompokkan endpoint terkait menggunakan perintah folder agar proyek tetap mudah dinavigasi saat jumlah endpoint bertambah.
4. Definisikan autentikasi dengan apidog security-scheme
Autentikasi adalah bagian dari kontrak API. Definisikan skema autentikasi sekali di tingkat proyek, lalu referensikan dari endpoint yang membutuhkannya.
apidog security-scheme --help
apidog security-scheme list --project <PROJECT_ID>
Kelompok ini mencakup mekanisme seperti API key, bearer token, dan OAuth 2.0. Konsepnya dipetakan ke components/securitySchemes pada OpenAPI, sehingga proses impor dan ekspor tetap selaras.
5. Validasi file sumber daya dengan cli-schema validate
Sebelum menerapkan perubahan dari file definisi, validasi struktur file tersebut.
apidog cli-schema --help
apidog cli-schema validate --file resource.json
Tambahkan langkah ini ke CI sebelum perubahan diterapkan:
apidog cli-schema validate --file resource.json
Perintah ini memvalidasi bentuk file sumber daya yang diharapkan CLI. Ini bukan pengganti linting OpenAPI: gunakan Spectral atau vacuum untuk memeriksa style guide dan aturan OpenAPI.
6. Ekspor kembali ke OpenAPI
Setelah mendesain API dalam proyek Apidog, ekspor artefak standar untuk toolchain lain.
apidog export \
--project <PROJECT_ID> \
--format openapi \
-o dist/openapi.yaml
Gunakan hasil ekspor untuk linting, code generation, atau publikasi dokumentasi:
spectral lint dist/openapi.yaml
openapi-generator-cli generate \
-i dist/openapi.yaml \
-g spring \
-o ./server
Dengan begitu, proyek Apidog dan toolchain open-source dapat digunakan bersama. Ekspor OpenAPI menjadi jembatan di antara keduanya.
Hubungkan ke CI
Kedua rute cocok untuk CI karena berbasis perintah, output teks, dan exit code. Pipeline minimal dapat terlihat seperti ini:
# Gagal jika ada pelanggaran style OpenAPI.
spectral lint openapi.yaml
# Validasi file sumber daya CLI sebelum diterapkan.
apidog cli-schema validate --file resource.json
# Buat satu artefak OpenAPI untuk generator dan dokumentasi.
redocly bundle openapi.yaml -o dist/openapi.bundled.yaml
# Opsional: hasilkan stub server.
openapi-generator-cli generate \
-i dist/openapi.bundled.yaml \
-g spring \
-o ./server
Contoh GitHub Actions sederhana:
name: Validate API
on:
pull_request:
paths:
- "api/**"
- "resource.json"
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install CLI tools
run: |
npm install -g @stoplight/spectral-cli
npm install -g @redocly/cli
- name: Lint OpenAPI
run: spectral lint api/openapi.yaml
- name: Bundle OpenAPI
run: redocly bundle api/openapi.yaml -o dist/openapi.bundled.yaml
Output JSON dari Apidog, termasuk agentHints.nextSteps, juga memungkinkan workflow ini dijalankan oleh agen pengkodean tanpa bergantung pada GUI.
Masalah umum
File terpisah merusak tool hilir.
Struktur $ref yang terpisah nyaman untuk manusia, tetapi generator dan publisher dokumentasi sering membutuhkan satu file. Jalankan redocly bundle sebelum code generation atau deployment dokumentasi.
Menganggap Apidog sebagai linter.
Apidog mengelola sumber daya proyek, bukan aturan gaya OpenAPI. Gunakan Spectral atau vacuum untuk linting. apidog cli-schema validate hanya memvalidasi struktur file sumber daya CLI.
Mengedit proyek kosong tanpa impor.
Jika API sudah ada dalam OpenAPI atau Swagger, impor dulu ke proyek:
apidog import --project <PROJECT_ID> --file openapi.yaml
Jangan mengharapkan endpoint lama tersedia dalam proyek baru yang belum diimpor.
Mendefinisikan autentikasi berulang per endpoint.
Buat security-scheme pada tingkat proyek dan gunakan ulang. Pendekatan ini menjaga kontrak autentikasi tetap konsisten di seluruh operasi.
Kesimpulan
Desain API dari CLI mengubah proses berbasis klik menjadi rangkaian perintah yang dapat diulang, direview, dan dijalankan di CI.
Gunakan rute open-source jika Anda menginginkan kontrol penuh:
- Tulis OpenAPI.
- Lint dengan Spectral.
- Bundle dengan Redocly.
- Generate kode dengan openapi-generator.
Gunakan Apidog CLI jika Anda ingin mengelola skema, endpoint, dan autentikasi sebagai satu proyek terintegrasi, lalu ekspor OpenAPI saat dibutuhkan.
Pilih berdasarkan workflow tim Anda. Jika Anda sudah memiliki toolchain Git-native, pertahankan dan tambahkan apidog export saat memerlukan artefak portabel. Jika ingin mengurangi konfigurasi perekat antaralat, unduh Apidog, instal CLI, dan desain API berikutnya langsung dari terminal.
Top comments (0)