Geliştirmek için sahte bir API'ye ihtiyacınız var ve bunu otuz saniye içinde elde etmeniz gerekiyor. Barındırılan bir hizmet değil, bir Docker Compose yığını değil, tıklayarak geçeceğiniz bir GUI değil. Sadece bir dosyayı okuyan ve localhost üzerinden yanıtlar sunmaya başlayan bir komut.
Hafif bir mock sunucusu işte bunu yapar. Onu bir OpenAPI spesifikasyonuna veya küçük bir veri dosyasına işaretlersiniz, tek bir komut çalıştırırsınız ve gerçek arka uç hala geliştirilirken ön ucunuzun veya testlerinizin erişebileceği gerçekçi uç noktalar elde edersiniz. En iyileri tek bir ikili veya npx ile çalıştırılabilir bir paket olarak gelir, bir saniyeden kısa sürede başlar ve neredeyse hiç yapılandırma gerektirmez. Buradaki bazı daha ağır seçenekler JVM üzerinde çalışır ve çok daha fazlasını yapar; gelişmiş istek eşleştirme veya durum bilgisi olan davranışa ihtiyacınız olduğunda yerlerini hak ederler.
Bu rehber, altı CLI mock sunucusunu sizden ne kadar az şey istediklerine göre sıralar. Hiçbir şey kurmadan çalıştırabileceğiniz olanlarla başlar, ardından bağımsız JVM sunucularını kapsar ve Apidog CLI aracılığıyla entegre rota ile sona erer. Aşağıdaki her kurulum komutu ve mock komutu, her aracın resmi belgelerine göre kontrol edilmiştir. Komut satırının ötesindeki daha geniş alanı istiyorsanız, en iyi API mock araçları derlemesi GUI ve barındırılan seçenekleri de kapsar.
button
Bir CLI mock aracını "hafif" yapan nedir?
Hafiflik, özellik sayısından ziyade ayak izi ve sürtünme ile ilgilidir. Bu araçları karşılaştırırken dört şeyi değerlendirin:
- Kurulum boyutu ve çalışma zamanı.
npxile çalıştırabileceğiniz saf bir Node paketi birkaç megabayt ağırlığındadır. Bağımsız bir JVM sunucusu, Java çalışma zamanına ihtiyaç duyan 20MB+ bir jar dosyasıdır. Her ikisi de geçerlidir; bu listenin farklı uçlarında yer alırlar. - Başlangıç hızı. İyi bir mock sunucusu, siz düzenleyicinize geri dönmeden önce çalışıyor olmalıdır. Node tabanlı araçlar, bir saniyenin altında soğuk başlar.
- İlk yanıta kadar yapılandırma. Tek bir dosya ve tek bir komutla sıfırdan canlı bir uç noktaya geçebilir misiniz? En hafif araçlar evet der.
- Terminal öncelikli. Hesap yok, kontrol paneli yok, döngüde GUI adımı yok. Araç bir dosyayı okur ve sunar ve bir kabuk betiğine veya CI işine sığar.
Araçlar en küçük ve en hızlı olandan başlayarak sıralanmıştır. Prism, Mockoon CLI ve json-server, npx ile ve küresel bir kurulum olmadan çalıştırabileceğiniz araçlardır.
Prism (Stoplight)
Prism, tek bir komutla bir OpenAPI dosyasını canlı bir mock sunucusuna dönüştürür. Zaten bir spesifikasyonunuz varsa, bu listedeki en az çaba gerektiren mock aracıdır; paths, examples ve şemalarınızı okur ve bunlara uygun yanıtlar sunar.
npx @stoplight/prism-cli mock ./openapi.yaml
Bu, spesifikasyonunuzdaki her operasyonun bağlı olduğu http://127.0.0.1:4010 adresinde bir sunucu başlatır. Prism, bir yanıt için tanımladığınız example'ı döndürür veya tanımlamadıysanız şemadan geçerli rastgele bir örnek oluşturur. Ayrıca gelen istekleri spesifikasyona göre doğrular, böylece hatalı bir çağrı sessizce geçmek yerine uygun bir 422 alır. Küresel bir kurulum için npm install -g @stoplight/prism-cli kullanın ve npx'i atlayın.
En iyisi: mock'un sözleşmeye sadık kalmasını isteyen spec-first ekipleri için. Prism Apache-2.0 lisanslıdır ve OpenAPI 3.1, 3.0, 2.0 ve Postman koleksiyonlarını destekler.
Dürüst sınırlamalar: Prism durumsuzdur. Bir POST hiçbir şeyi kalıcı kılmaz, bu nedenle bir oluştur-sonra-oku akışını taklit etmez. Mock'u, spesifikasyonunuz kadar iyidir; ince örnekler, ince yanıtlar anlamına gelir. Sözleşme doğruluğuna dayalı mock için tam olarak amaç budur ve REST API mock araçları iş akışıyla iyi eşleşir.
Mockoon CLI
Mockoon CLI, ya ücretsiz Mockoon masaüstü uygulamasından dışa aktardığınız ya da düz bir OpenAPI spesifikasyonu olan bir veri dosyasından bir mock API çalıştırır. Masaüstü uygulaması, rotaları görsel olarak oluşturmanıza olanak tanır; CLI, aynı ortamı CI'da veya bir sunucuda başsız olarak çalıştırır.
npx @mockoon/cli start --data ./mockoon-env.json --port 3000
--data'yı bir Mockoon ortam dosyasına veya bir OpenAPI JSON/YAML dosyasına yönlendirin ve hemen sunar. Veri dosyası daha eski bir Mockoon sürümünden geldiyse, CLI orijinaline dokunmadan bellekte taşır. Kalıcı bir mockoon-cli komutu tercih ediyorsanız, npm install -g @mockoon/cli ile küresel olarak kurun.
En iyisi: GUI'de mock'lar tasarlamak ancak onları başsız çalıştırmak isteyen ekipler için. MIT lisanslıdır ve dağıtımlar için resmi bir Docker görüntüsüne sahiptir.
Dürüst sınırlamalar: en zengin rotalar masaüstü uygulamasında oluşturulur, bu nedenle JSON ortam dosyasını manuel olarak düzenlemek zordur. Hiçbir yardımcı uygulama istemiyorsanız, Prism veya json-server her şeyi elinizle yazdığınız tek bir dosyada tutar.
json-server
json-server, henüz bir spesifikasyonunuz olmadığında bir REST API'yi taklit etmenin en hızlı yoludur. Verilerinizi tanımlayan düz bir JSON dosyası yazarsınız ve bu, GET, POST, PUT, PATCH ve DELETE dahil olmak üzere etrafında eksiksiz bir REST API oluşturur.
echo '{ "posts": [{ "id": 1, "title": "hello" }] }' > db.json
npx json-server db.json
Bu, http://localhost:3000/posts adresine gerçek CRUD ile hizmet verir. /posts adresine yapılan bir POST, aslında bir kayıt ekler ve bunu db.json dosyasına geri yazar, böylece durum bilgisi olan davranışı ücretsiz olarak elde edersiniz, ki Prism ve WireMock bunu kutudan çıktığı gibi sağlamaz. Ayrıca sorgu parametreleri aracılığıyla filtreleme, sıralama ve sayfalama da elde edersiniz. Mevcut 1.x sürümü varsayılan olarak dosyayı izler ve değişiklikte yeniden yükler; sürekli olarak PATH'inizde olmasını istiyorsanız npm install -g json-server ile küresel olarak kurun.
En iyisi: gerçek API var olmadan önce bir dakika içinde çalışan bir REST arka ucuna ihtiyaç duyan ön uç geliştiricileri için. MIT lisanslıdır ve sıfır spesifikasyon gerektiren RESTful API için hafif mock sunucu seçeneklerinden biridir.
Dürüst sınırlamalar: kaynak tarzı bir REST şekli varsayar. Derinlemesine özel rotalar, REST dışı uç noktalar veya katı başlık eşleştirme, temiz bir şekilde yapabildiklerinin dışındadır. Bir prototipleme aracıdır, bir sözleşme doğrulayıcı değildir.
MockServer
MockServer, hassas istek eşleştirme için ağır sıklettir. Yukarıdaki araçlar bir spesifikasyonu veya bir veri dosyasını sunarken, MockServer beklentileri tanımlamanıza olanak tanır: bir isteği yöntem, yol, başlık, sorgu veya gövdeye göre eşleştirin, ardından zaman aşımı ve hata işleme testi için gecikmeler ve hatalar dahil olmak üzere tam olarak istediğiniz yanıtı döndürün.
java -jar mockserver-netty-5.15.0-no-dependencies.jar -p 1080
Bu, MockServer'ı 1080 portunda başlatır. Ardından, davranışı yapılandırmak için REST API'sine beklentiler gönderirsiniz veya programatik olarak yönlendirirsiniz. Node kullanıcıları ham jar dosyasını atlayabilir ve resmi sarmalayıcıyı kullanabilirler:
npm install mockserver-node
const mockserver = require('mockserver-node');
mockserver.start_mockserver({ serverPort: 1080 });
En iyisi: bir isteğin neye benzemesi gerektiği ve mock'un nasıl yanıt vereceği konusunda hassas kontrole ihtiyaç duyan entegrasyon testleri için. Apache-2.0 lisanslıdır ve tek bir portta HTTP, HTTPS ve daha fazlasını destekler.
Dürüst sınırlamalar: bir JVM sunucusudur, bu nedenle Node araçlarından daha ağır ve yavaş başlar ve beklenti kurulumu bir spesifikasyona işaret etmekten daha ayrıntılıdır. Sadece bir spesifikasyonun sunulmasına ihtiyacınız varsa, bu aşırıya kaçmaktır; eğer ondan daha fazlasına ihtiyacınız olursa, MockServer alternatifleri karşılaştırması takasları ortaya koyar.
WireMock (bağımsız)
WireMock, Java ve JVM test dünyasında popüler olan diğer köklü JVM mock sunucusudur. Bağımsız jar dosyası, bir JUnit testine gömeceğiniz aynı motoru çalıştırır, böylece yerel geliştirmede oluşturduğunuz bir mock doğrudan test paketinize taşınır.
java -jar wiremock-standalone.jar --port 8080
Bu, 8080 portunda hizmet verir. WireMock, mappings/ dizininden veya JSON API'sinden stub eşlemelerini okur ve ayrıca gerçek trafiği kaydedip stub olarak tekrar oynatabilir, bu da kontrol edemediğiniz bir üçüncü taraf API'sini taklit ederken kullanışlıdır. CI için resmi bir wiremock/wiremock Docker görüntüsü bulunmaktadır.
En iyisi: yerel geliştirme ve test paketi arasında paylaşılan tek bir mock motoru ve ayrıca kaydet-ve-tekrar oynat işlevselliği isteyen JVM ekipleri için. Apache-2.0 lisanslıdır.
Dürüst sınırlamalar: MockServer gibi, bir Java çalışma zamanına ihtiyaç duyar ve Node seçeneklerinden daha yavaş başlar. Stub eşleme JSON'ı güçlüdür ancak tek dosyalık bir veri mock'undan öğrenilmesi gereken daha fazlası vardır. JavaScript tarafından geldiyseniz, Mock Service Worker (MSW) alternatifi karşılaştırması, WireMock'ın tarayıcı öncelikli mock ile nerede oturduğunu kapsar.
Apidog CLI
Yukarıdaki araçların her biri mock'un bir dilimini çözer. Apidog entegre rotayı seçer: API tasarımınız, mock'unuz, testleriniz ve dokümanlarınız tek bir projede yaşar ve Apidog CLI bu projeyi terminalden yönetir. Apidog açık kaynak değildir; ücretsiz bir katmanı olan ticari bir üründür. Ancak bu ücretsiz katman ve CLI, ayrı bir mock sunucusu, test çalıştırıcısı ve spesifikasyon aracını bir araya getirmek yerine bir alternatif sunar.
Apidog, tanımladığınız her uç noktadan otomatik olarak akıllı bir mock oluşturur; yanıtlar şemanızın alan türlerini ve adlandırmasını takip eder, böylece bir phone alanı rastgele bir dize yerine makul bir telefon numarası döndürür. Belirli bir istek için belirli bir yanıta ihtiyacınız olduğunda, bir mock beklentisi eklersiniz. CLI, bu mock kaynaklarını projenin bir parçası olarak yönetir:
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog mock --help
mock komut grubu, uç noktalar, şemalar, ortamlar ve test çalıştırmaları için komut gruplarının yanı sıra projenizin mock beklentileriyle betiklerden ve CI'dan çalışır. Çıktı, yapay zeka ajanları tarafından da insanlar tarafından da kullanılabilir olmasını sağlayan bir agentHints.nextSteps alanı içeren yapılandırılmış JSON'dur. Tam komut yüzeyi Apidog CLI tam rehberinde açıklanmıştır.
En iyisi: mock'u, spesifikasyonu ve testleri üç ayrı araç yerine tek bir yerde tutmayı tercih eden ekipler için. Yerleşik mock sunucusunu ve CLI'yı kendi projenizde denemek için Apidog'u indirin.
Dürüst sınırlamalar: tek amaçlı bir ikili değil, bir platformdur, bu nedenle json-server hiçbir şey istemezken bir proje ve bir giriş ister. Tek ihtiyacınız tek bir dosyadan tek kullanımlık bir mock ise, daha hafif bir araç kazanır; API'nizi zaten Apidog'da tasarlıyorsanız, mock zaten oradadır.
Nasıl seçilir
Aracı zaten sahip olduklarınıza göre eşleştirin. Bir OpenAPI spesifikasyonunuz varsa, Prism veya Mockoon CLI doğrudan sunar. Henüz hiçbir şeyiniz yoksa, json-server bir JSON dosyasından bir API icat eder. Kesin istek eşleştirmeye ihtiyacınız varsa, MockServer veya WireMock'a ulaşın. Mock'un tasarımınızın ve testlerinizin yanında yaşamasını istiyorsanız, Apidog'u kullanın.
| Araç | En iyisi | Kurulum | Açık kaynaklı mı? | Notlar |
|---|---|---|---|---|
| Prism | Bir OpenAPI spesifikasyonunu mock olarak sunma | npx @stoplight/prism-cli |
Evet (Apache-2.0) | Sözleşmeye uygun, durumsuz, port 4010 |
| Mockoon CLI | GUI'de oluşturulan mock'ları başsız çalıştırma | npx @mockoon/cli |
Evet (MIT) | Ortam dosyasını veya OpenAPI'yi okur, Docker görüntüsü |
| json-server | JSON'dan anında REST API | npx json-server |
Evet (MIT) | Durum bilgili CRUD, spesifikasyon gerektirmez, port 3000 |
| MockServer | Hassas istek eşleştirme | java -jar mockserver-netty-*.jar |
Evet (Apache-2.0) | JVM, npm sarmalayıcı mevcut, port 1080 |
| WireMock | JVM geliştirme + test tek bir motoru paylaşır | java -jar wiremock-standalone.jar |
Evet (Apache-2.0) | Kaydet ve tekrar oynat, Docker görüntüsü, port 8080 |
| Apidog CLI | Mock, spesifikasyon ve testler tek bir projede | npm install -g apidog-cli |
Hayır (ücretsiz katman) | Otomatik akıllı mock + yönetilen beklentiler |
Kaba kural: hız için npx araçları, eşleştirme derinliği için JVM sunucuları, birkaç yerine tek bir iş akışı istediğinizde Apidog. Henüz mock yapıp yapmamaya karar veremediyseniz, API mock kullanım senaryoları anlatımı ne zaman karşılığını verdiğini kapsar.
Sonuç
Hafif mock, tek bir soruya indirgenir: araca beslemek için zaten neye sahipsiniz? Bir spesifikasyon Prism veya Mockoon CLI'ye gider. Boş bir sayfa json-server'a gider. Katı eşleştirme MockServer veya WireMock'a gider. Ve birkaç aracı çalıştırmak ve bağlamak istemiyorsanız, Apidog, mock'u tasarımla ve testlerle yan yana tutar, zaten betikleyeceğiniz aynı CLI'dan yönetilir.
Altı araç da terminalden çalışır, bir CI işine sığar ve saatler yerine saniyeler içinde sahte bir API almanızı sağlar. Durumunuzu kapsayan en küçük olanı seçin ve yalnızca gerçekten ihtiyacınız olduğunda ağırlık ekleyin. Entegre sürümü görmek için Apidog'u indirin ve API tasarımınızdan tek adımda bir mock sunucusu oluşturun.
