DEV Community

Cover image for Alat CLI Open Source Gratis untuk API Mocking
Walse
Walse

Posted on • Originally published at apidog.com

Alat CLI Open Source Gratis untuk API Mocking

Saat membuat mock API dari baris perintah, lisensi sama pentingnya dengan fitur. Server mock yang kode sumbernya bisa Anda audit, host sendiri, dan jalankan di CI tanpa batas jumlah pengguna berbeda secara mendasar dari mock SaaS yang berada di balik login. Panduan ini berfokus pada alat open source yang dapat Anda kloning, periksa, dan jalankan sendiri secara gratis.

Coba Apidog sekarang

Setiap alat di daftar ini memiliki kode sumber publik dengan lisensi permisif—MIT atau Apache-2.0—tersedia di repositori GitHub, dan dapat di-hosting sendiri tanpa akun. Jika Anda mencari opsi biner tunggal yang lebih kecil dengan fokus pada startup cepat dan ukuran instalasi, lihat pilihan server mock ringan. Daftar ini berfokus pada source code dan self-hosting, sehingga platform yang lebih besar tetap relevan.

Untuk setiap alat, Anda akan mendapatkan lisensi, perintah untuk langsung menjalankannya, kasus penggunaan terbaik, serta keterbatasannya. Untuk cakupan yang juga menyertakan opsi komersial, baca rangkuman alat mock API terbaik dan ikhtisar alat mocking REST API.

Catatan penting: Apidog bukan open source; ini adalah platform komersial freemium. Karena itu, Apidog hanya muncul sebagai alternatif terintegrasi di bagian akhir, bukan sebagai entri open-source. Semua alat bernomor di bawah benar-benar open source.

Apa yang membuat alat mock CLI menjadi open source

Gunakan tiga kriteria berikut saat mengevaluasi alat mock API:

  1. Lisensi permisif

    Kode sumber harus tersedia secara publik di bawah lisensi seperti MIT atau Apache-2.0. Dengan lisensi ini, Anda dapat membaca kode, melakukan fork, memodifikasi, dan menggunakannya dalam produk tanpa biaya lisensi atau batas jumlah pengguna.

  2. Dapat di-host sendiri

    Alat harus dapat berjalan di laptop, container Docker, atau server Anda sendiri tanpa control plane yang di-hosting dan tanpa keharusan membuat akun. Ini penting untuk CI runner terisolasi atau lingkungan air-gapped.

  3. Dipelihara secara terbuka

    Cari repositori GitHub publik dengan riwayat commit, issue, dan rilis yang aktif. Jumlah bintang GitHub hanya sinyal kasar; aktivitas commit dan rilis terbaru biasanya lebih berguna.

Kecepatan mentah dan ukuran instalasi bukan kriteria utama dalam daftar ini. Jika itu prioritas Anda, gunakan perspektif server mock ringan. Di sini, platform container yang lebih besar tetap valid selama source code terbuka dan lisensinya gratis.

1. Prism (Stoplight)

Prism mengubah file OpenAPI atau koleksi Postman menjadi server mock. Cukup arahkan Prism ke spesifikasi Anda; Prism akan menyajikan respons contoh dan memvalidasi request terhadap skema. Prism juga dapat berjalan sebagai validation proxy di depan API asli.

Jalankan mock OpenAPI:

npm install -g @stoplight/prism-cli

prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Enter fullscreen mode Exit fullscreen mode

Perintah tersebut menjalankan mock pada http://127.0.0.1:4010.

Coba endpoint yang tersedia:

curl http://127.0.0.1:4010/pets
Enter fullscreen mode Exit fullscreen mode

Prism mengambil respons dari contoh yang didefinisikan dalam dokumen OpenAPI. Jika request body tidak sesuai skema, Prism dapat menunjukkan bagian kontrak yang dilanggar.

Terbaik untuk: mocking berbasis kontrak ketika OpenAPI menjadi source of truth. Mode validation proxy berguna untuk mendeteksi perbedaan antara spesifikasi dan implementasi API nyata.

Keterbatasan: kualitas mock bergantung pada kelengkapan contoh dan skema OpenAPI Anda. Prism tidak menyediakan perilaku stateful bawaan, misalnya membuat data lalu membacanya kembali. Prism juga memerlukan runtime Node.js.

2. Mockoon CLI

Mockoon populer melalui aplikasi desktop, tetapi CLI-nya menggunakan engine yang sama untuk CI dan self-hosting tanpa GUI. Anda dapat menjalankan environment yang dibuat dari aplikasi Mockoon atau menggunakan file OpenAPI.

Jalankan environment dari file JSON:

npm install -g @mockoon/cli

mockoon-cli start --data ./environment.json --port 3000
Enter fullscreen mode Exit fullscreen mode

Anda juga dapat menggunakan spesifikasi OpenAPI secara langsung:

mockoon-cli start --data ./openapi.yaml --port 3000 --watch --log-transaction
Enter fullscreen mode Exit fullscreen mode

Opsi yang berguna:

  • --watch: memuat ulang server saat file berubah.
  • --log-transaction: mencetak detail request dan response ke terminal.
  • --port: menetapkan port mock server.

Terbaik untuk: respons kaya berbasis aturan tanpa perlu menulis server sendiri. Mockoon mendukung templating respons, aturan kondisional, dan mode proxy. Satu endpoint dapat menghasilkan respons berbeda berdasarkan header, query parameter, atau body request.

Keterbatasan: workflow penulisan paling nyaman tetap melalui aplikasi desktop. Mengedit file environment JSON secara manual bisa rumit, dan templating dinamis memerlukan waktu untuk dipelajari.

3. json-server

json-server adalah salah satu cara tercepat untuk membuat REST API palsu yang stateful. Berikan file JSON, lalu json-server otomatis menghasilkan endpoint CRUD untuk setiap koleksi.

Buat file db.json:

{
  "posts": [
    {
      "id": 1,
      "title": "Mock API pertama"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Jalankan server:

npx json-server db.json
Enter fullscreen mode Exit fullscreen mode

Setelah berjalan, Anda langsung memiliki endpoint berikut:

curl http://localhost:3000/posts
curl http://localhost:3000/posts/1

curl -X POST http://localhost:3000/posts \
  -H 'Content-Type: application/json' \
  -d '{"title":"Post baru"}'
Enter fullscreen mode Exit fullscreen mode

json-server menyediakan GET, POST, PUT, PATCH, dan DELETE. Data yang dibuat melalui POST akan ditulis kembali ke file JSON, sehingga request berikutnya dapat membacanya.

Terbaik untuk: pengembangan frontend sebelum backend siap. Ini adalah pilihan praktis saat Anda memerlukan CRUD stateful dengan setup hampir nol.

Keterbatasan: bentuk API mengikuti konvensi REST json-server, sehingga tidak cocok untuk API kustom yang sangat spesifik. Tidak ada impor OpenAPI; file JSON berfungsi sebagai kontrak dan sumber data. Alat ini juga bukan untuk load testing atau simulasi production yang kompleks.

4. WireMock

WireMock adalah alat mocking HTTP yang kuat untuk skenario pengujian kompleks. Anda dapat membuat stub melalui API admin atau file JSON, menjalankan skenario stateful, menambahkan delay, menyuntikkan error, serta merekam dan memutar ulang traffic.

Jalankan WireMock dengan Docker:

docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
Enter fullscreen mode Exit fullscreen mode

Daftarkan stub melalui API admin:

curl -X POST http://localhost:8080/__admin/mappings \
  -H 'Content-Type: application/json' \
  -d '{
    "request": {
      "method": "GET",
      "url": "/hello"
    },
    "response": {
      "status": 200,
      "body": "world"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Verifikasi respons:

curl http://localhost:8080/hello
Enter fullscreen mode Exit fullscreen mode

Output:

world
Enter fullscreen mode Exit fullscreen mode

Untuk menyimpan stub di repository, buat file di direktori mappings/ lalu mount direktori tersebut ke container WireMock.

Terbaik untuk: pengujian integrasi dengan skenario realistis, termasuk respons lambat, error dari layanan pihak ketiga, kondisi stateful, serta record-and-replay.

Keterbatasan: WireMock berbasis JVM, jadi Anda membutuhkan Java atau container Docker. Konfigurasinya luas, sehingga dapat terasa berlebihan untuk mock sederhana. Tidak ada alur satu perintah untuk membaca spesifikasi dan langsung menjalankan mock seperti Prism.

5. MockServer

MockServer menggabungkan mock HTTP(S) dan proxy dalam satu server. Alat ini cocok untuk pengujian integrasi ketika Anda perlu memalsukan API, meneruskan traffic, merekam request, atau menyuntikkan kegagalan.

Versi terbaru juga mendukung HTTP/2, gRPC, dan WebSocket.

Jalankan MockServer:

docker run -d --rm -p 1080:1080 mockserver/mockserver
Enter fullscreen mode Exit fullscreen mode

Daftarkan expectation:

curl -X PUT 'http://localhost:1080/mockserver/expectation' \
  -H 'Content-Type: application/json' \
  -d '{
    "httpRequest": {
      "path": "/order"
    },
    "httpResponse": {
      "body": "{\"status\":\"ok\"}"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Uji endpoint:

curl http://localhost:1080/order
Enter fullscreen mode Exit fullscreen mode

Output:

{"status":"ok"}
Enter fullscreen mode Exit fullscreen mode

MockServer juga menyediakan client library untuk Java, JavaScript, Ruby, dan bahasa lain. Dengan library tersebut, Anda dapat membuat expectation langsung dari kode test tanpa menjalankan curl.

Terbaik untuk: mock dan proxy dalam satu tempat, verifikasi jumlah request, serta simulasi kegagalan. Cocok untuk stack yang banyak menggunakan JVM.

Keterbatasan: seperti WireMock, MockServer berbasis JVM dan konfigurasi expectation JSON dapat verbose. Fungsinya cukup tumpang tindih dengan WireMock; pilih berdasarkan client library dan workflow testing yang paling sesuai dengan stack Anda. Jika tidak cocok, lihat alternatif MockServer.

6. Microcks

Microcks adalah platform untuk mengelola mock API dalam skala tim. Sebagai proyek inkubasi Cloud Native Computing Foundation, Microcks dapat membuat mock dari OpenAPI, AsyncAPI, gRPC, GraphQL, koleksi Postman, dan SoapUI. Kontrak yang sama juga dapat digunakan untuk menguji kesesuaian implementasi API nyata.

Jalankan image all-in-one:

docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Enter fullscreen mode Exit fullscreen mode

Buka:

http://localhost:8585
Enter fullscreen mode Exit fullscreen mode

Kemudian impor spesifikasi API Anda untuk membuat endpoint mock.

Microcks juga menyediakan microcks-cli untuk mengimpor artefak dan menjalankan operasi dari CI:

microcks-cli import 'petstore.yaml:true' \
  --microcksURL=http://localhost:8585/api \
  --keycloakClientId=... \
  --keycloakClientSecret=...
Enter fullscreen mode Exit fullscreen mode

Terbaik untuk: tim yang membutuhkan katalog mock bersama untuk banyak API dan protokol, dengan contract testing bawaan. Dukungan untuk protokol async dan event-driven seperti Kafka atau MQTT menjadi pembeda utama.

Keterbatasan: Microcks adalah platform server, bukan biner tunggal. microcks-cli bertindak sebagai client untuk instance Microcks yang sudah berjalan; CLI tidak menyajikan mock dengan sendirinya. Untuk mock lokal sekali pakai, Microcks lebih berat daripada Prism atau json-server.

Catatan jujur: Apidog

Apidog bukan open source, sehingga tidak termasuk dalam daftar bernomor. Namun, jika Anda membutuhkan workflow terintegrasi untuk desain API, mocking, testing, dan dokumentasi, ini dapat menjadi alternatif untuk menggabungkan beberapa alat di atas.

Apidog adalah platform freemium yang tingkat gratisnya mencakup mocking. Perintah apidog mock dari apidog-cli memungkinkan Anda mengelola expectation mock dari terminal dalam proyek yang sama dengan desain, test, dan dokumentasi API.

Smart mock dapat menghasilkan nilai field dari skema secara otomatis, sehingga Anda tidak selalu perlu menulis response body contoh secara manual.

Trade-off-nya jelas:

  • Pilih alat open source di atas jika self-hosting atau lingkungan air-gapped adalah persyaratan mutlak.
  • Pilih Apidog jika workflow desain-ke-mock yang terintegrasi lebih penting daripada source code terbuka.

Cara memilih

Alat Terbaik untuk Instalasi Lisensi Catatan
Prism Mock berbasis spesifikasi dan validation proxy npm i -g @stoplight/prism-cli Apache-2.0 OpenAPI/Postman masuk, mock keluar; stateless
Mockoon CLI Respons berbasis aturan tanpa kode npm i -g @mockoon/cli MIT Desain di aplikasi, jalankan headless
json-server REST stateful untuk frontend npx json-server db.json MIT CRUD lengkap dengan persistensi
WireMock Skenario test kompleks dan error injection docker run wiremock/wiremock Apache-2.0 JVM; record-and-replay; stateful
MockServer Mock, proxy, dan verifikasi request docker run mockserver/mockserver Apache-2.0 JVM; HTTP/2, gRPC, WebSocket
Microcks Katalog multi-API dan multi-protokol docker run microcks-uber Apache-2.0 Platform CNCF; CLI adalah client
Apidog (bukan OSS) Workflow desain-ke-mock terintegrasi npm i -g apidog-cli Freemium Tingkat gratis; apidog mock dalam satu proyek

Pilih berdasarkan kebutuhan teknis, bukan popularitas:

  • Gunakan Prism jika OpenAPI adalah kontrak utama dan Anda perlu memvalidasi request.
  • Gunakan json-server jika frontend membutuhkan API CRUD stateful dengan cepat.
  • Gunakan Mockoon CLI jika Anda membutuhkan respons kondisional tanpa menulis kode server.
  • Gunakan WireMock atau MockServer untuk test integration yang memerlukan error injection, delay, state, atau proxy.
  • Gunakan Microcks jika tim Anda mengelola banyak kontrak API dan protokol dalam satu katalog.

Untuk memetakan alat ke kebutuhan lebih spesifik, lihat panduan kasus penggunaan mocking API.

Ringkasan

Alat mock CLI open source memberi Anda kontrol penuh: source code dapat diaudit, server dapat di-host sendiri, dan mock dapat dijalankan di CI tanpa bergantung pada akun SaaS.

  • Prism dan json-server menangani kasus umum dengan cepat.
  • Mockoon CLI menyediakan aturan respons yang kaya tanpa menulis server.
  • WireMock dan MockServer cocok untuk skenario test yang kompleks.
  • Microcks memperluas mocking menjadi katalog kontrak multi-protokol untuk tim.

Semua enam alat di atas menggunakan lisensi MIT atau Apache-2.0, tersedia di GitHub publik, dan dapat di-host sendiri.

Jika Anda lebih memilih mengelola mock bersama desain API, testing, dan dokumentasi tanpa menyatukan beberapa alat, unduh Apidog dan coba apidog mock di tingkat gratis. Ini bukan open source, tetapi menyediakan satu workflow dari terminal hingga CI.

Top comments (0)