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.
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:
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.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.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.
- Lisensi: Apache-2.0
- Repo: stoplightio/prism
Jalankan mock OpenAPI:
npm install -g @stoplight/prism-cli
prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Perintah tersebut menjalankan mock pada http://127.0.0.1:4010.
Coba endpoint yang tersedia:
curl http://127.0.0.1:4010/pets
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.
- Lisensi: MIT
- Repo: mockoon/mockoon
Jalankan environment dari file JSON:
npm install -g @mockoon/cli
mockoon-cli start --data ./environment.json --port 3000
Anda juga dapat menggunakan spesifikasi OpenAPI secara langsung:
mockoon-cli start --data ./openapi.yaml --port 3000 --watch --log-transaction
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.
- Lisensi: MIT
- Repo: typicode/json-server
Buat file db.json:
{
"posts": [
{
"id": 1,
"title": "Mock API pertama"
}
]
}
Jalankan server:
npx json-server db.json
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"}'
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.
- Lisensi: Apache-2.0
- Repo: wiremock/wiremock
Jalankan WireMock dengan Docker:
docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
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"
}
}'
Verifikasi respons:
curl http://localhost:8080/hello
Output:
world
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.
- Lisensi: Apache-2.0
- Repo: mock-server/mockserver
Jalankan MockServer:
docker run -d --rm -p 1080:1080 mockserver/mockserver
Daftarkan expectation:
curl -X PUT 'http://localhost:1080/mockserver/expectation' \
-H 'Content-Type: application/json' \
-d '{
"httpRequest": {
"path": "/order"
},
"httpResponse": {
"body": "{\"status\":\"ok\"}"
}
}'
Uji endpoint:
curl http://localhost:1080/order
Output:
{"status":"ok"}
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.
- Lisensi: Apache-2.0
- Repo: microcks/microcks
Jalankan image all-in-one:
docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Buka:
http://localhost:8585
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=...
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)