Komut satırından bir API’yi taklit ederken lisans, özellik listesi kadar önemlidir. Kaynak kodunu inceleyebildiğiniz, kendi altyapınızda barındırabildiğiniz ve koltuk sınırı olmadan CI’da çalıştırabildiğiniz bir mock server; giriş ekranı gerektiren barındırılan bir SaaS çözümünden farklıdır. Bu rehber, ücretsiz olarak klonlayabileceğiniz, inceleyebileceğiniz ve çalıştırabileceğiniz açık kaynak araçlara odaklanır.
Bu listedeki tüm araçlar şu filtreyi karşılar:
- Kaynak kodu herkese açık bir GitHub deposundadır.
- Lisansı MIT veya Apache-2.0’dır.
- Hesap açmadan kendi makinenizde, konteyner içinde veya CI ortamında çalıştırabilirsiniz.
Daha küçük, tek ikili dosyalı ve hızlı başlayan araçlar arıyorsanız hafif sahte sunucu seçenekleri yazısına bakın. Bu makaledeki odak, kurulum boyutu değil; kaynak kodunun erişilebilirliği ve kendi kendine barındırmadır.
Her araç için lisansını, çalışır durumda başlatan komutları, uygun kullanım alanlarını ve sınırlamalarını bulacaksınız. Ticari araçları da kapsayan daha geniş bir karşılaştırma için en iyi API sahte araçları derlemesine ve REST API sahte araçları genel bakışına göz atın.
Not: Apidog açık kaynaklı değildir. Bu nedenle listeye açık kaynak bir seçenek olarak dahil edilmemiştir; makalenin sonunda, entegre bir alternatif olarak ayrıca ele alınır.
Bir CLI sahte aracını açık kaynak yapan nedir?
Bir aracı seçmeden önce üç temel kriteri doğrulayın.
1. Lisans
Kaynak kodunun herkese açık olması tek başına yeterli değildir. Lisansın da yeniden kullanım ve dağıtım için uygun olması gerekir. Bu listedeki araçların tamamı MIT veya Apache-2.0 lisansına sahiptir.
Bu lisanslar sayesinde genellikle şunları yapabilirsiniz:
- Kaynak kodunu incelemek
- Depoyu fork’lamak
- Aracı kendi ürününüzde kullanmak
- Koltuk lisansı veya lisans ücreti olmadan CI’da çalıştırmak
2. Kendi kendine barındırma
Araç; dizüstü bilgisayarınızda, Docker konteynerinde veya kendi sunucunuzda çalışmalıdır. Barındırılan kontrol düzlemi, hesap zorunluluğu veya dış servise bağımlılık olmaması özellikle hava boşluklu CI ortamlarında önemlidir.
3. Aktif bakım
Depoda yalnızca yıldız sayısına bakmayın. Şunları da kontrol edin:
- Güncel commit geçmişi
- Açık sorunlar ve bakım yanıtları
- Etiketlenmiş sürümler
- Yayın notları
Ham performans ve kurulum boyutu bu listenin ana kriteri değildir. Bu konular için hafif araçlar rehberine bakabilirsiniz.
Prism (Stoplight)
Prism, bir OpenAPI veya Postman tanımını canlı bir mock server’a dönüştürür. Spesifikasyondaki örnek yanıtları sunabilir, gelen istekleri şemaya göre doğrulayabilir ve gerçek API’nin önünde doğrulama proxy’si olarak çalışabilir.
- Lisans: Apache-2.0
- Depo: stoplightio/prism
Hızlı başlangıç
npm install -g @stoplight/prism-cli
prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Komut, varsayılan olarak http://127.0.0.1:4010 üzerinde mock server’ı başlatır.
Örneğin:
curl http://127.0.0.1:4010/pets
GET /pets yanıtı OpenAPI belgenizde tanımlanan örnekten üretilir. Geçersiz bir istek gövdesi gönderdiğinizde Prism, ihlal edilen şema kuralını raporlayabilir.
En uygun kullanım: OpenAPI dosyasının doğruluk kaynağı olduğu sözleşme odaklı mock’lar ve doğrulama proxy’si.
Sınırlamalar:
- Yanıt kalitesi spesifikasyondaki şema ve örneklere bağlıdır.
- Yerleşik durumlu davranış sunmaz; örneğin kaynak oluşturup daha sonra aynı kaynağı geri okuma senaryosu yoktur.
- Node.js çalışma zamanı gerektirir.
Mockoon CLI
Mockoon, masaüstü uygulamasının kullandığı mock motorunu CLI üzerinden çalıştırmanızı sağlar. Ortamı görsel arayüzde tasarlayabilir, ardından CI veya sunucuda GUI olmadan başlatabilirsiniz.
- Lisans: MIT
- Depo: mockoon/mockoon
Ortam dosyasından başlatma
npm install -g @mockoon/cli
mockoon-cli start --data ./environment.json --port 3000
OpenAPI dosyasını doğrudan da kullanabilirsiniz:
mockoon-cli start --data ./openapi.yaml --port 3000
Geliştirme sırasında dosya değişikliklerini izlemek ve işlem günlüklerini görmek için:
mockoon-cli start \
--data ./environment.json \
--port 3000 \
--watch \
--log-transaction
En uygun kullanım: Kod yazmadan kural tabanlı, koşullu ve şablonlanmış yanıtlar üretmek.
Mockoon ile tek bir endpoint için istek başlığına, sorgu parametresine veya gövdeye bağlı farklı yanıtlar tanımlayabilirsiniz. Proxy modu da gerçek bir servise yönlendirme gereken senaryolarda kullanılabilir.
Sınırlamalar:
- Ortamları oluşturmak için en rahat yol masaüstü uygulamasıdır.
- Ortam JSON’unu elle düzenlemek zaman alabilir.
- Dinamik şablonlama sözdizimi öğrenme gerektirir.
json-server
json-server, JSON dosyasından hızla durumlu bir REST API üretir. Bir JSON veri kaynağı verirsiniz; araç otomatik olarak CRUD endpoint’leri oluşturur ve değişiklikleri dosyaya yazar.
- Lisans: MIT
- Depo: typicode/json-server
Hızlı başlangıç
Önce bir db.json oluşturun:
{
"posts": [
{
"id": 1,
"title": "İlk gönderi"
}
]
}
Ardından sunucuyu başlatın:
npx json-server db.json
Artık aşağıdaki endpoint’leri kullanabilirsiniz:
curl http://localhost:3000/posts
curl http://localhost:3000/posts/1
Yeni kayıt oluşturmak için:
curl -X POST http://localhost:3000/posts \
-H "Content-Type: application/json" \
-d '{"title":"Yeni gönderi"}'
Araç; GET, POST, PUT, PATCH ve DELETE rotalarını üretir. Filtreleme, sıralama ve sayfalama için sorgu parametrelerini de destekler. POST edilen kayıt dosyaya yazıldığı için daha sonraki isteklerde geri okunabilir.
En uygun kullanım: Arka uç henüz hazır değilken ön uç geliştirme ve durumlu CRUD senaryoları.
Sınırlamalar:
- REST kaynak yapısı konusunda görüşlüdür; tamamen özel API biçimleriyle eşleşmeyebilir.
- OpenAPI içe aktarma özelliği yoktur.
- JSON dosyası fiilen API sözleşmeniz olur.
- Yük testi veya üretim davranışını simüle etmek için tasarlanmamıştır.
WireMock
WireMock; istek eşleştirme, yanıt şablonlama, durumlu senaryolar, hata enjeksiyonu, proxy ve kaydet-oynat iş akışları için kullanılan kapsamlı bir HTTP mock aracıdır.
- Lisans: Apache-2.0
- Depo: wiremock/wiremock
Docker ile başlatma
docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
Yönetici API’si üzerinden bir stub ekleyin:
curl -X POST http://localhost:8080/__admin/mappings \
-H 'Content-Type: application/json' \
-d '{
"request": {
"method": "GET",
"url": "/hello"
},
"response": {
"status": 200,
"body": "world"
}
}'
Mock endpoint’i test edin:
curl http://localhost:8080/hello
Yanıt:
world
Stub tanımlarını mappings/ dizinine JSON dosyaları olarak koyup bu dizini konteynere bağlayarak da yönetebilirsiniz.
En uygun kullanım: Karmaşık entegrasyon ve uçtan uca test senaryoları.
Özellikle şu ihtiyaçlarda güçlüdür:
- Durumlu akışlar
- Gecikme ve hata enjeksiyonu
- Üçüncü taraf API arızalarını simüle etme
- Gerçek API trafiğini kaydedip sonra oynatma
Sınırlamalar:
- JVM veya Docker gerektirir.
- Yapılandırma yüzeyi basit mock ihtiyaçları için fazla geniş olabilir.
- Prism’deki gibi tek bir OpenAPI dosyasını okuyup hemen başlatan minimal bir akış sunmaz.
MockServer
MockServer, tek bir port üzerinde HTTP(S) mock ve proxy işlevi sunar. Entegrasyon testlerinde API’leri taklit etmek, canlı trafiği proxy’lemek, kaydetmek ve hata enjekte etmek için kullanılabilir.
- Lisans: Apache-2.0
- Depo: mock-server/mockserver
Docker ile başlatma
docker run -d --rm -p 1080:1080 mockserver/mockserver
Bir beklenti tanımlayın:
curl -X PUT 'http://localhost:1080/mockserver/expectation' \
-H 'Content-Type: application/json' \
-d '{
"httpRequest": {
"path": "/order"
},
"httpResponse": {
"body": "{\"status\":\"ok\"}"
}
}'
Endpoint’i çağırın:
curl http://localhost:1080/order
MockServer, tanımladığınız JSON yanıtını döndürür.
Java, JavaScript, Ruby ve diğer ekosistemler için istemci kütüphaneleri sayesinde beklentileri curl yerine doğrudan test kodunuzdan oluşturabilirsiniz.
En uygun kullanım: Mock, proxy, doğrulama ve hata enjeksiyonunu aynı test altyapısında birleştirmek.
Belirli bir isteğin beklenen sayıda çağrılıp çağrılmadığını doğrulamak gerektiğinde MockServer’ın doğrulama API’si kullanılabilir. JVM ağırlıklı teknoloji yığınları için uygundur. İhtiyacınıza tam uymuyorsa MockServer alternatifleri yazısına bakın.
Sınırlamalar:
- JVM tabanlıdır.
- Beklenti JSON’ları büyüyebilir.
- WireMock ile işlevsel örtüşmesi vardır; seçimi test yığınınıza uygun istemci kütüphanesine göre yapın.
Microcks
Microcks, çoklu API ve protokol yönetimi için platform yaklaşımını benimser. OpenAPI, AsyncAPI, gRPC, GraphQL, Postman koleksiyonları ve SoapUI projelerinden canlı mock’lar oluşturabilir. Aynı sözleşmeleri gerçek uygulamaya karşı uyumluluk testi çalıştırmak için de kullanır.
- Lisans: Apache-2.0
- Depo: microcks/microcks
- Durum: CNCF kuluçka projesi
Hepsi bir arada imajla başlatma
docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Tarayıcıda aşağıdaki adresi açın:
http://localhost:8585
Ardından bir API spesifikasyonu içe aktararak mock endpoint’leri oluşturun.
CI’dan çalışan Microcks örneğini yönetmek için microcks-cli kullanılabilir:
microcks-cli import 'petstore.yaml:true' \
--microcksURL=http://localhost:8585/api \
--keycloakClientId=... \
--keycloakClientSecret=...
En uygun kullanım: Birden fazla API ve protokol için merkezi bir mock kataloğu ve yerleşik sözleşme testi isteyen ekipler.
Özellikle asenkron ve olay odaklı protokollerde — Kafka, MQTT ve benzerleri — mock ihtiyacı olan ekipler için dikkat çekicidir.
Sınırlamalar:
- Tek dosyalı bir CLI aracı değil, sunucu platformudur.
-
microcks-clitek başına mock sunmaz; çalışan bir Microcks örneğine istemci olarak bağlanır. - Tek seferlik yerel mock ihtiyaçları için Prism veya
json-serverdaha hafif olabilir.
Dürüst bir parantez: Apidog
Apidog açık kaynaklı değildir; bu nedenle yukarıdaki araçlarla aynı kategoride değerlendirilmemelidir. Ancak spesifikasyon odaklı mock’lar, durumlu CRUD ve sözleşme testini ayrı araçlar kurmadan tek akışta yönetmek istiyorsanız entegre bir alternatif olabilir.
Apidog, mock özelliğini içeren freemium bir platformdur. apidog-cli ile apidog mock komutunu terminalden kullanarak mock beklentilerini tasarım, test ve dokümantasyonla aynı projede yönetebilirsiniz.
Akıllı mock yaklaşımı, şemadan alan değerleri üretmeye yardımcı olur; böylece örnek gövdeleri her durumda elle yazmanız gerekmez.
Temel fark nettir:
- Açık kaynak ve hava boşluklu kendi kendine barındırma zorunluysa yukarıdaki altı araçtan birini seçin.
- Entegre tasarım-test-mock iş akışı daha önemliyse Apidog, birden çok aracı birleştirmeye alternatif olabilir.
Nasıl seçilir?
| Araç | En iyi kullanım | Kurulum | Lisans | Notlar |
|---|---|---|---|---|
| Prism | Spesifikasyon odaklı mock ve doğrulama proxy’si | npm i -g @stoplight/prism-cli |
Apache-2.0 | OpenAPI/Postman girdisi; durum bilgisi yok |
| Mockoon CLI | Kural tabanlı, kodsuz yanıtlar | npm i -g @mockoon/cli |
MIT | Uygulamada tasarla, başsız çalıştır |
| json-server | Ön uç için durumlu REST mock | npx json-server db.json |
MIT | Kalıcılıklı CRUD, sıfır yapılandırma |
| WireMock | Karmaşık test senaryoları ve hata enjeksiyonu | docker run wiremock/wiremock |
Apache-2.0 | JVM; kaydet-oynat; durumlu davranış |
| MockServer | Mock, proxy ve istek doğrulama | docker run mockserver/mockserver |
Apache-2.0 | JVM; HTTP/2, gRPC ve WebSocket desteği |
| Microcks | Merkezi, çoklu API/protokol kataloğu | docker run microcks-uber |
Apache-2.0 | CNCF platformu; CLI sunucu değil istemcidir |
| Apidog (OSS değil) | Entegre tasarım ve mock akışı | npm i -g apidog-cli |
Freemium | Tek projede apidog mock
|
Araçları popülerliğe göre değil, ihtiyacınızın şekline göre seçin:
- OpenAPI dosyanızı doğrudan uygulayan bir mock istiyorsanız: Prism ile başlayın.
-
Arka uç gelmeden önce durumlu CRUD gerekiyorsa:
json-serveren hızlı başlangıç seçeneklerinden biridir. - Hata, gecikme, proxy veya kaydet-oynat içeren testler gerekiyorsa: WireMock veya MockServer kullanın.
- Birden fazla protokol ve merkezi sözleşme testi gerekiyorsa: Microcks değerlendirin.
- Kural tabanlı yanıtları görsel olarak tasarlayıp CI’da çalıştırmak istiyorsanız: Mockoon CLI uygundur.
Senaryo bazlı seçim için API taklit kullanım durumları rehberine bakabilirsiniz.
Özet
Açık kaynak CLI mock araçları; kaynak kodunu inceleyebileceğiniz, kendi altyapınızda barındırabileceğiniz ve CI’da çalıştırabileceğiniz mock server’lar sağlar.
- Prism ve json-server, yaygın ihtiyaçları tek komutla hızlıca karşılar.
- WireMock ve MockServer, karmaşık entegrasyon testleri için uygundur.
- Microcks, mock yönetimini çoklu protokol ve merkezi katalog düzeyine taşır.
- Bu altı aracın tamamı MIT veya Apache-2.0 lisanslıdır, kendi kendine barındırılabilir ve halka açık GitHub depolarına sahiptir.
Mock’ları API tasarımı, testler ve dokümantasyonla birlikte yönetmek istiyorsanız Apidog’u indirin ve ücretsiz katmanda apidog mock komutunu deneyin. Açık kaynak değildir; ancak terminalden CI’a kadar tek bir akış sunar.
Top comments (0)