Saat Anda membuat mock API dari baris perintah, lisensi sama pentingnya dengan daftar fitur. Server mock yang kode sumbernya dapat Anda baca, host sendiri, dan jalankan di CI tanpa batasan jumlah pengguna adalah hal yang sangat berbeda dari mock SaaS yang di-hosting di balik login. Panduan ini membahas sisi open-source: alat yang dapat Anda kloning, periksa, dan jalankan secara gratis.
Setiap alat di sini kode sumbernya tersedia di bawah lisensi permisif (MIT atau Apache-2.0), berada di repositori GitHub publik, dan dapat di-hosting sendiri tanpa akun. Itulah filternya. Jika Anda menginginkan pilihan biner tunggal yang lebih kecil yang diperingkat berdasarkan kecepatan startup dan ukuran instalasi, baca pilihan server mock ringan sebagai gantinya; daftar ini tentang sumber dan hosting sendiri, jadi platform yang lebih berat yang dapat di-hosting sendiri masih bisa mendapatkan tempat.
Untuk setiap alat, Anda akan mendapatkan lisensi, satu perintah instal-plus-jalankan yang membuktikan fungsinya, keunggulan utamanya, dan kekurangannya. Jika Anda menginginkan cakupan yang lebih luas termasuk opsi komersial, rangkuman alat mock API terbaik dan ikhtisar alat mocking REST API akan memberikan gambaran yang lebih luas.
Catatan singkat dan jujur sebelum daftar. Apidog bukan open source; ini adalah platform komersial freemium. Ini muncul sekali di bagian akhir sebagai alternatif terintegrasi untuk alat-alat ini, dilabeli dengan jelas, bukan sebagai entri open source. Segala sesuatu di bagian bernomor di bawah ini adalah benar-benar open source.
Apa yang membuat alat mock CLI menjadi open source
Tiga hal yang menentukan apakah sebuah alat termasuk dalam daftar ini.
Lisensi. Kode sumbernya harus publik di bawah lisensi permisif. Setiap pilihan di sini adalah MIT atau Apache-2.0, jadi Anda dapat membacanya, mem-fork-nya, dan menggunakannya di dalam produk Anda sendiri tanpa biaya lisensi atau batasan jumlah pengguna.
Dapat di-host sendiri. Anda menjalankannya di laptop Anda, dalam kontainer, atau di server Anda sendiri. Tidak ada bidang kontrol yang di-hosting, tidak ada "panggilan pulang", tidak ada gerbang akun. Itulah yang membuat mock dapat digunakan dalam CI runner yang terisolasi (air-gapped).
Dipelihara secara terbuka. Repositori GitHub publik dengan riwayat commit, masalah, dan rilis yang nyata. Bintang adalah sinyal kasar; commit terbaru dan rilis yang ditandai adalah sinyal yang lebih baik.
Perhatikan apa yang tidak ada dalam daftar: kecepatan mentah atau ukuran instalasi. Itu adalah sudut pandang ringan. Di sini, platform berbasis kontainer yang besar dan dapat di-host sendiri adalah sah selama sumbernya terbuka dan lisensinya gratis.
Prism (Stoplight)
Prism mengubah file OpenAPI atau Postman menjadi server mock langsung. Arahkan ke spesifikasi dan itu akan menyajikan respons contoh, memvalidasi permintaan masuk terhadap skema, dan dapat berjalan sebagai proksi validasi di depan API nyata. Lisensi: Apache-2.0. Repo: stoplightio/prism.
npm install -g @stoplight/prism-cli
prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Perintah tersebut memulai mock di http://127.0.0.1:4010 yang sepenuhnya digerakkan oleh spesifikasi. GET /pets mengembalikan contoh dari dokumen OpenAPI Anda; kirim payload yang buruk dan Prism akan memberi tahu Anda bagian skema mana yang Anda langgar.
Terbaik dalam: mocking kontrak berbasis spesifikasi di mana file OpenAPI adalah sumber kebenaran. Mode proksi validasi adalah yang menonjol; ini mendeteksi penyimpangan antara spesifikasi Anda dan API Anda yang sebenarnya.
Keterbatasan: respons berasal dari contoh dan skema Anda, jadi mock hanya akan kaya sesuai spesifikasinya. Tidak ada perilaku stateful bawaan (tidak ada "buat lalu baca kembali"). Ini adalah alat Node, jadi Anda memerlukan runtime Node.
Mockoon CLI
Mockoon dikenal karena aplikasi desktop-nya, tetapi CLI-nya dilengkapi mesin yang sama tanpa GUI, dibangun untuk CI dan self-hosting. Anda merancang lingkungan (di aplikasi atau secara manual) atau memberikannya file OpenAPI, dan itu akan menyajikan mock tersebut. Lisensi: MIT. Repo: mockoon/mockoon.
npm install -g @mockoon/cli
mockoon-cli start --data ./environment.json --port 3000
Anda juga bisa langsung memulai dari file OpenAPI dengan --data ./openapi.yaml. Tambahkan --watch untuk memuat ulang saat ada perubahan file dan --log-transaction untuk mencetak log permintaan/respons lengkap.
Terbaik dalam: respons kaya berbasis aturan tanpa menulis kode. Mockoon mendukung templating respons, aturan kondisional, dan mode proksi, sehingga satu endpoint dapat mengembalikan body yang berbeda berdasarkan permintaan. Mendesain secara visual di aplikasi dan menjalankannya tanpa antarmuka grafis melalui CLI adalah pemisahan yang bersih.
Keterbatasan: jalur penulisan terbaik adalah aplikasi desktop, sehingga mengedit JSON lingkungan secara manual itu rumit. Sintaks templating dinamis memiliki kurva pembelajaran tersendiri.
json-server
json-server adalah cara tercepat untuk memalsukan API REST. Beri file JSON dan itu akan menghasilkan rute CRUD lengkap (GET, POST, PUT, PATCH, DELETE) dengan persistensi nyata kembali ke file tersebut. Lisensi: MIT. Repo: typicode/json-server.
npx json-server db.json
Dengan db.json yang memiliki array "posts" tingkat atas, Anda langsung mendapatkan GET /posts, GET /posts/1, POST /posts, dan sisanya, ditambah pemfilteran, pengurutan, dan paginasi melalui parameter kueri. POST catatan baru dan itu akan ditulis ke file; baca kembali dan itu ada di sana.
Terbaik dalam: pengembangan frontend sebelum backend ada. Ini stateful secara bawaan, yang tidak dimiliki oleh Prism dan sebagian besar mock berbasis spesifikasi. Konfigurasi nol, dan npx berarti Anda bahkan tidak perlu menginstalnya.
Keterbatasan: ini beropini tentang bentuk REST, jadi tidak akan cocok dengan API kustom yang sembarangan. Tidak ada impor OpenAPI; file JSON adalah kontraknya. Tidak dimaksudkan untuk pengujian beban atau perilaku seperti produksi.
WireMock
WireMock adalah yang terberat dalam mocking HTTP open source, dengan jutaan unduhan setiap bulan. Ini berjalan sebagai proses mandiri yang dikonfigurasi melalui API admin JSON atau dari file stub JSON, dan menangani pencocokan permintaan, templating respons, skenario stateful, injeksi kesalahan, serta rekam-dan-putar ulang. Lisensi: Apache-2.0. Repo: wiremock/wiremock.
docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
curl -X POST http://localhost:8080/__admin/mappings \
-H 'Content-Type: application/json' \
-d '{"request":{"method":"GET","url":"/hello"},"response":{"status":200,"body":"world"}}'
Baris pertama memulai WireMock; yang kedua mendaftarkan stub melalui API admin-nya. Sekarang curl http://localhost:8080/hello mengembalikan world. Anda juga dapat menempatkan file stub di direktori mappings/ dan memasangnya ke dalam kontainer.
Terbaik dalam: skenario pengujian yang kompleks. Perilaku stateful, penundaan dan kesalahan untuk mensimulasikan pihak ketiga yang tidak stabil, serta proxy-plus-record untuk menangkap API nyata dan memutarnya kembali nanti. Ini adalah alat ketika mock Anda perlu berperilaku seperti hal yang nyata sedang diuji.
Keterbatasan: ini adalah alat JVM, jadi kontainer atau runtime Java adalah syarat masuknya. Permukaan konfigurasinya besar; mock sederhana terasa berlebihan. Tidak ada satu perintah "baca spesifikasi dan jalankan" seperti yang dimiliki Prism.
MockServer
MockServer adalah mock dan proksi HTTP(S) pada satu port, yang ditujukan langsung untuk pengujian integrasi. Ini mem-mock API, dapat memproksi dan merekam lalu lintas langsung, serta memungkinkan Anda menyuntikkan kegagalan untuk menguji bagaimana klien Anda menanganinya. Versi terbaru menambahkan dukungan HTTP/2, gRPC, dan WebSocket. Lisensi: Apache-2.0. Repo: mock-server/mockserver.
docker run -d --rm -p 1080:1080 mockserver/mockserver
curl -X PUT 'http://localhost:1080/mockserver/expectation' \
-H 'Content-Type: application/json' \
-d '{"httpRequest":{"path":"/order"},"httpResponse":{"body":"{\"status\":\"ok\"}"}}'
Permintaan PUT mendaftarkan "ekspektasi"; setelah itu, curl http://localhost:1080/order mengembalikan JSON Anda. Klien MockServer (Java, JavaScript, Ruby, dan lainnya) memungkinkan Anda menetapkan ekspektasi yang sama dari dalam kode pengujian Anda alih-alih melalui curl.
Terbaik dalam: mocking dan proxy di tempat yang sama, ditambah injeksi kegagalan. Jika Anda perlu memverifikasi bahwa permintaan tertentu dibuat dalam jumlah tertentu, API verifikasi MockServer dibuat untuk itu. Sangat cocok untuk stack yang banyak menggunakan JVM. Lihat artikel kami tentang alternatif MockServer jika bentuknya tidak terlalu tepat.
Keterbatasan: seperti WireMock, ini berbasis JVM dan JSON ekspektasinya bertele-tele. Tumpang tindih dengan WireMock itu nyata; pilih salah satu berdasarkan pustaka klien mana yang cocok dengan stack pengujian Anda.
Microcks
Microcks adalah pilihan platform, dan ini adalah proyek inkubasi Cloud Native Computing Foundation. Ini mengubah proyek OpenAPI, AsyncAPI, gRPC, GraphQL, koleksi Postman, dan SoapUI menjadi mock langsung, dan menggunakan kembali kontrak yang sama untuk menjalankan pengujian kesesuaian terhadap implementasi nyata Anda. Ini mencakup protokol event-driven dan async, tidak hanya HTTP. Lisensi: Apache-2.0. Repo: microcks/microcks.
docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Itu menjalankan gambar all-in-one; buka http://localhost:8585 dan impor spesifikasi untuk mendapatkan endpoint mock. microcks-cli yang menyertainya menggerakkan server yang berjalan dari CI:
microcks-cli import 'petstore.yaml:true' \
--microcksURL=http://localhost:8585/api \
--keycloakClientId=... --keycloakClientSecret=...
Terbaik dalam: tim yang menginginkan satu katalog mock yang diatur di berbagai API dan protokol, dengan pengujian kontrak bawaan. Mocking async/event-driven (Kafka, MQTT, dan teman-temannya) jarang ditemukan di bidang ini.
Keterbatasan: ini adalah server, bukan biner tunggal. Satu peringatan penting: microcks-cli memicu pengujian dan mengimpor artefak terhadap instance Microcks yang sedang berjalan; ia tidak menyajikan mock dengan sendirinya. Jadi CLI adalah klien, dan Anda masih menjalankan platformnya. Untuk mock lokal satu kali, itu lebih berat daripada Prism atau json-server.
Catatan jujur: Apidog
Apidog bukan open source, jadi tidak mendapatkan slot bernomor di sini. Tetapi jika Anda menyadari bahwa alat-alat di atas menyelesaikan bagian-bagian yang berbeda (mock berbasis spesifikasi, CRUD stateful, pengujian kontrak) dan Anda lebih suka tidak menyatukannya, patut disebutkan. Apidog adalah platform freemium yang tingkat gratisnya mencakup mocking, dan apidog mock di apidog-cli memungkinkan Anda mengelola ekspektasi mock dari terminal di samping desain, pengujian, dan dokumen dalam satu proyek. Smart mock menghasilkan nilai bidang yang realistis dari skema Anda secara otomatis, jadi Anda tidak perlu menulis body contoh secara manual.
Pertukarannya jelas: Anda mendapatkan alur kerja terintegrasi dan tingkat gratis alih-alih open source dan self-hosting. Jika open source atau self-hosting yang terisolasi (air-gapped) adalah persyaratan mutlak, salah satu dari enam alat di atas adalah jawaban Anda. Jika alur desain-ke-mock yang terintegrasi lebih penting, Apidog adalah alternatif untuk menyatukan beberapa alat.
Cara memilih
| Alat | Terbaik untuk | Instalasi | Lisensi | Catatan |
|---|---|---|---|---|
| Prism | Mock berbasis spesifikasi + proksi validasi | 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 palsu stateful untuk frontend | npx json-server db.json |
MIT | CRUD lengkap dengan persistensi, tanpa konfigurasi |
| WireMock | Skenario pengujian kompleks, kesalahan | docker run wiremock/wiremock |
Apache-2.0 | JVM; rekam-dan-putar ulang; stateful |
| MockServer | Mock + proksi + verifikasi | docker run mockserver/mockserver |
Apache-2.0 | JVM; HTTP/2, gRPC, WebSocket |
| Microcks | Katalog multi-API/protokol yang diatur | docker run microcks-uber |
Apache-2.0 | Platform CNCF; CLI adalah klien, bukan server |
| Apidog (bukan OSS) | Desain-ke-mock terintegrasi | npm i -g apidog-cli |
Freemium | Tingkat gratis; apidog mock dalam satu proyek |
Pilih berdasarkan bentuk, bukan popularitas. Untuk mock yang membaca file OpenAPI Anda dan menegakkannya, mulailah dengan Prism. Untuk CRUD stateful sebelum backend tersedia, json-server unggul dalam kecepatan. Untuk skenario pengujian yang kaya dengan kesalahan dan rekam-dan-putar ulang, WireMock atau MockServer; pilih berdasarkan pustaka klien. Untuk katalog multi-protokol bersama dengan pengujian kontrak, Microcks. Untuk bentuk mana yang cocok untuk situasi mana, panduan kasus penggunaan mocking API memetakan alat ke skenario.
Ringkasan
Alat mock CLI open-source memberi Anda server mock yang dapat Anda baca, host sendiri, dan jalankan di CI secara gratis. Prism dan json-server mencakup kasus umum dalam satu perintah; WireMock dan MockServer menangani skenario pengujian yang sulit; Microcks mengembangkannya menjadi katalog yang diatur di seluruh protokol. Keenamnya adalah MIT atau Apache-2.0, semuanya dapat di-host sendiri, semuanya ada di GitHub publik.
Jika Anda lebih suka mengelola mock di samping desain API, pengujian, dan dokumen Anda tanpa menyatukan alat terpisah, Unduh Apidog dan coba apidog mock di tingkat gratis. Ini bukan open source, tetapi ini adalah satu tempat untuk menjalankan seluruh alur dari baris perintah hingga CI.
