DEV Community

Cover image for En İyi Hafif API Mocking CLI Araçları
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

En İyi Hafif API Mocking CLI Araçları

Geliştirme sırasında sahte bir API'ye ihtiyacınız varsa ve bunu otuz saniye içinde ayağa kaldırmanız gerekiyorsa, barındırılan bir hizmete, Docker Compose yığınına veya GUI akışına ihtiyacınız yoktur. Tek bir dosyayı okuyup localhost üzerinden yanıt döndüren bir CLI komutu yeterlidir.

Apidog'u bugün deneyin

Hafif bir mock sunucusu tam olarak bunu sağlar: Bir OpenAPI spesifikasyonu veya küçük bir veri dosyası verirsiniz, komutu çalıştırırsınız ve gerçek arka uç geliştirilirken ön uç uygulamanızın ya da testlerinizin çağırabileceği uç noktalar elde edersiniz. En hafif seçenekler tek bir ikili veya npx ile çalıştırılabilir paket olarak gelir; bazı gelişmiş seçenekler ise JVM üzerinde çalışır ve ayrıntılı istek eşleştirme ya da daha karmaşık davranışlar sunar.

Bu rehber, altı CLI mock sunucusunu kurulum ve kullanım sürtünmesine göre sıralar. Önce hiçbir şey kurmadan çalıştırabileceğiniz araçları, ardından bağımsız JVM sunucularını ve son olarak Apidog CLI ile entegre yaklaşımı ele alır. GUI ve barındırılan araçları da değerlendirmek isterseniz, en iyi API mock araçları derlemesine göz atın.

Bir CLI mock aracını “hafif” yapan nedir?

Hafiflik, özellik sayısından çok ayak izi ve ilk yanıta ulaşma süresiyle ilgilidir. Bir aracı seçerken şu dört noktayı değerlendirin:

  • Kurulum boyutu ve çalışma zamanı: npx ile çalışan bir Node paketi birkaç MB olabilir. Bağımsız bir JVM sunucusu ise Java çalışma zamanı gerektiren 20 MB+ bir JAR dosyası olabilir.
  • Başlangıç hızı: Mock sunucusu, düzenleyicinize dönmeden önce hazır olmalıdır. Node tabanlı araçlar genellikle bir saniyeden kısa sürede başlar.
  • İlk yanıta kadar yapılandırma: Tek dosya ve tek komutla çalışan bir uç noktaya ulaşabiliyor musunuz?
  • Terminal öncelikli kullanım: Hesap, kontrol paneli veya GUI adımı olmadan araç bir dosyayı okuyup hizmet verebilmeli; kabuk betiklerine ve CI işlerine eklenebilmelidir.

Prism, Mockoon CLI ve json-server, küresel kurulum yapmadan npx ile çalıştırabileceğiniz seçeneklerdir.

Prism (Stoplight)

Prism, bir OpenAPI dosyasını tek komutla canlı mock sunucusuna dönüştürür. Elinizde zaten bir spesifikasyon varsa, en az yapılandırma gerektiren araçlardan biridir. paths, examples ve şemalarınızı okuyarak bunlara uygun yanıtlar üretir.

npx @stoplight/prism-cli mock ./openapi.yaml
Enter fullscreen mode Exit fullscreen mode

Komut, spesifikasyonunuzdaki operasyonları varsayılan olarak http://127.0.0.1:4010 üzerinde sunar.

Prism'i etkili kullanmak için OpenAPI dosyanıza yanıt örnekleri ekleyin:

paths:
  /users/{id}:
    get:
      responses:
        "200":
          description: Kullanıcı bulundu
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
              example:
                id: 1
                name: Ayşe
Enter fullscreen mode Exit fullscreen mode

Bir example tanımladıysanız Prism bunu döndürür. Tanımlamadıysanız şemadan geçerli rastgele bir örnek üretir. Gelen istekleri de spesifikasyona göre doğrular; hatalı bir çağrı sessizce geçmek yerine uygun bir 422 yanıtı alabilir.

Sık kullanacaksanız küresel olarak kurabilirsiniz:

npm install -g @stoplight/prism-cli
prism mock ./openapi.yaml
Enter fullscreen mode Exit fullscreen mode

En iyisi: Mock'un sözleşmeye sadık kalmasını isteyen spec-first ekipleri için.

Dürüst sınırlamalar: Prism durumsuzdur. POST isteği veri kalıcılaştırmaz; dolayısıyla oluştur-sonra-oku akışını tek başına taklit etmez. Mock kalitesi doğrudan spesifikasyonunuzdaki örneklere ve şemalara bağlıdır. Sözleşme odaklı mock iş akışları için REST API mock araçları rehberini de inceleyebilirsiniz.

Mockoon CLI

Mockoon CLI, Mockoon masaüstü uygulamasından dışa aktardığınız bir ortam dosyasını veya düz bir OpenAPI spesifikasyonunu başsız olarak çalıştırır. Rotaları GUI ile tasarlayıp CI veya sunucu ortamında CLI ile çalıştırmak için uygundur.

npx @mockoon/cli start --data ./mockoon-env.json --port 3000
Enter fullscreen mode Exit fullscreen mode

--data parametresini şu dosya türlerinden birine yönlendirebilirsiniz:

  • Mockoon ortam dosyası
  • OpenAPI JSON dosyası
  • OpenAPI YAML dosyası

Örneğin bir OpenAPI dosyasını doğrudan sunabilirsiniz:

npx @mockoon/cli start --data ./openapi.yaml --port 3000
Enter fullscreen mode Exit fullscreen mode

Ortam dosyanız eski bir Mockoon sürümünden geldiyse CLI, orijinal dosyaya dokunmadan bellekte taşıma işlemi yapabilir.

Küresel kullanım için:

npm install -g @mockoon/cli
mockoon-cli start --data ./mockoon-env.json --port 3000
Enter fullscreen mode Exit fullscreen mode

En iyisi: Mock'ları GUI ile tasarlayıp bunları CI veya dağıtım ortamlarında başsız çalıştırmak isteyen ekipler için.

Dürüst sınırlamalar: En zengin rota yapılandırmaları genellikle masaüstü uygulamasında oluşturulur. JSON ortam dosyasını elle düzenlemek, Prism spesifikasyonu veya json-server veri dosyası kadar pratik olmayabilir. Yardımcı uygulama kullanmak istemiyorsanız Prism veya json-server daha doğrudan seçeneklerdir.

json-server

json-server, henüz OpenAPI spesifikasyonunuz yokken REST API taklit etmenin hızlı yollarından biridir. Bir JSON veri dosyası yazarsınız; araç bunun üzerinde GET, POST, PUT, PATCH ve DELETE işlemlerini destekleyen bir REST API oluşturur.

Önce basit bir veri dosyası oluşturun:

echo '{ "posts": [{ "id": 1, "title": "hello" }] }' > db.json
Enter fullscreen mode Exit fullscreen mode

Ardından sunucuyu başlatın:

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

Artık http://localhost:3000/posts adresinde bir kaynak uç noktanız vardır.

curl http://localhost:3000/posts
Enter fullscreen mode Exit fullscreen mode

Yeni kayıt eklemek için:

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

POST isteği gerçekten veri ekler ve sonucu db.json dosyasına yazar. Bu nedenle Prism ve WireMock'un varsayılan kullanımından farklı olarak durum bilgisi olan CRUD davranışı elde edersiniz.

json-server; filtreleme, sıralama ve sayfalama için sorgu parametrelerini de destekler. Mevcut 1.x sürümü varsayılan olarak dosyayı izler ve değişikliklerde yeniden yükler.

Küresel kurulum:

npm install -g json-server
json-server db.json
Enter fullscreen mode Exit fullscreen mode

En iyisi: Gerçek API hazır olmadan önce dakikalar içinde çalışan bir REST arka ucuna ihtiyaç duyan ön uç geliştiricileri için.

Dürüst sınırlamalar: Kaynak odaklı REST yapısını varsayar. Özel rota kuralları, REST dışı uç noktalar veya katı başlık eşleştirme gereksinimleri için uygun değildir. Sıfır spesifikasyonla hızlı prototipleme yapmak istiyorsanız, RESTful API için hafif mock sunucu seçenekleri arasında öne çıkar.

MockServer

MockServer, hassas istek eşleştirme gerektiğinde kullanabileceğiniz daha ağır bir seçenektir. Spesifikasyon veya veri dosyası sunmak yerine beklentiler tanımlarsınız:

  • HTTP yöntemi
  • Yol
  • Başlıklar
  • Sorgu parametreleri
  • İstek gövdesi

Bu kurallara uyan bir istek geldiğinde istediğiniz yanıtı döndürebilir; gecikme, hata veya özel durum kodları ekleyebilirsiniz.

Bağımsız JAR ile başlatın:

java -jar mockserver-netty-5.15.0-no-dependencies.jar -p 1080
Enter fullscreen mode Exit fullscreen mode

Bu komut MockServer'ı 1080 portunda çalıştırır.

Ardından REST API üzerinden bir beklenti tanımlayabilirsiniz:

curl -X PUT "http://localhost:1080/mockserver/expectation" \
  -H "Content-Type: application/json" \
  -d '{
    "httpRequest": {
      "method": "GET",
      "path": "/users/42"
    },
    "httpResponse": {
      "statusCode": 200,
      "headers": {
        "Content-Type": [ "application/json" ]
      },
      "body": "{\"id\":42,\"name\":\"Ayşe\"}"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Node.js projesinde resmi sarmalayıcıyı kullanabilirsiniz:

npm install mockserver-node
Enter fullscreen mode Exit fullscreen mode
const mockserver = require('mockserver-node');

mockserver.start_mockserver({
  serverPort: 1080
});
Enter fullscreen mode Exit fullscreen mode

En iyisi: İstek biçimi ve dönen yanıt üzerinde hassas kontrol gerektiren entegrasyon testleri için.

Dürüst sınırlamalar: JVM üzerinde çalıştığı için Node tabanlı araçlardan daha ağırdır ve başlangıç süresi daha uzundur. Beklenti yapılandırması, sadece bir OpenAPI dosyasına işaret etmekten daha ayrıntılıdır. Yalnızca spesifikasyon sunmak istiyorsanız fazla gelebilir. Daha geniş bir karşılaştırma için MockServer alternatifleri rehberine bakabilirsiniz.

WireMock (bağımsız)

WireMock, Java ve JVM test ekosisteminde yaygın kullanılan köklü bir mock sunucusudur. Bağımsız JAR dosyası, JUnit testlerinde gömebileceğiniz aynı motoru çalıştırır. Böylece yerel geliştirmede oluşturduğunuz mock yapılandırmalarını test paketinize taşıyabilirsiniz.

java -jar wiremock-standalone.jar --port 8080
Enter fullscreen mode Exit fullscreen mode

Bu komut WireMock'u 8080 portunda başlatır.

Stub eşlemelerini mappings/ dizininde tutabilirsiniz:

{
  "request": {
    "method": "GET",
    "url": "/health"
  },
  "response": {
    "status": 200,
    "headers": {
      "Content-Type": "application/json"
    },
    "jsonBody": {
      "status": "ok"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Bu dosyayı örneğin mappings/health.json olarak kaydedin. WireMock başlatıldığında eşlemeyi okuyarak /health isteğine uygun yanıtı döndürür.

WireMock ayrıca gerçek trafiği kaydedip stub olarak tekrar oynatabilir. Bu özellik, kontrol edemediğiniz üçüncü taraf API'lerini taklit ederken kullanışlıdır. CI ortamları için resmi wiremock/wiremock Docker görüntüsü de bulunur.

En iyisi: Yerel geliştirme ve JVM test paketi arasında tek bir mock motoru paylaşmak isteyen ekipler için.

Dürüst sınırlamalar: Java çalışma zamanı gerektirir ve Node araçlarına göre daha yavaş başlar. Stub eşleme JSON yapısı güçlüdür, ancak tek dosyalık veri mock'larına göre daha fazla öğrenme gerektirir. JavaScript ve tarayıcı odaklı mock çözümleriyle karşılaştırmak için Mock Service Worker (MSW) alternatifi rehberini inceleyin.

Apidog CLI

Yukarıdaki araçların her biri mock sürecinin belirli bir bölümünü çözer. Apidog ise API tasarımı, mock'lar, testler ve dokümantasyonu tek proje altında birleştiren entegre bir yaklaşım sunar. Apidog CLI, bu projeyi terminal üzerinden yönetmenizi sağlar.

Apidog açık kaynaklı değildir; ücretsiz katmanı olan ticari bir üründür. Ancak ayrı bir mock sunucusu, test çalıştırıcısı ve spesifikasyon aracı kullanmak yerine bunları tek iş akışında yönetmek isteyen ekipler için bir alternatif sunar.

Apidog, tanımladığınız uç noktalardan otomatik mock yanıtları oluşturur. Yanıtlar şemanızdaki alan türlerini ve adlandırmayı takip eder. Belirli bir istek için belirli bir yanıt gerektiğinde mock beklentileri ekleyebilirsiniz.

CLI'yi kurup oturum açın:

npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog mock --help
Enter fullscreen mode Exit fullscreen mode

mock komut grubu, projenizin mock beklentileriyle betiklerden ve CI süreçlerinden çalışır. Uç noktalar, şemalar, ortamlar ve test çalıştırmaları için de komut grupları bulunur. Çıktı, hem insanlar hem de yapay zeka ajanları tarafından kullanılabilecek yapılandırılmış JSON biçimindedir; buna agentHints.nextSteps alanı da dahildir.

Komutların tamamı için Apidog CLI tam rehberine bakın.

En iyisi: Mock, spesifikasyon ve testleri üç ayrı araç yerine tek yerde tutmak isteyen ekipler için.

Dürüst sınırlamalar: Tek amaçlı bir ikili yerine platform yaklaşımı sunar; bu nedenle proje ve oturum açma gerektirir. Tek ihtiyacınız bir dosyadan tek kullanımlık mock üretmekse json-server veya Prism daha hafif olabilir. API tasarımınızı zaten Apidog üzerinde yapıyorsanız mock kaynakları aynı projede yer alır.

Yerleşik mock sunucusunu ve CLI'yi kendi projenizde denemek için Apidog'u indirin.

Nasıl seçilir?

Aracı, elinizdeki girdiye ve test gereksinimine göre seçin:

Araç En iyi kullanım Kurulum Açık kaynaklı mı? Notlar
Prism OpenAPI spesifikasyonunu mock olarak sunma npx @stoplight/prism-cli Evet (Apache-2.0) Sözleşmeye uygun, durumsuz, varsayılan 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
json-server JSON'dan anında REST API üretme npx json-server Evet (MIT) Durum bilgili CRUD, varsayılan port 3000
MockServer Hassas istek eşleştirme java -jar mockserver-netty-*.jar Evet (Apache-2.0) JVM, npm sarmalayıcı mevcut, varsayılan port 1080
WireMock JVM geliştirme ve testlerinde ortak mock motoru java -jar wiremock-standalone.jar Evet (Apache-2.0) Kaydet-tekrar oynat desteği, varsayılan port 8080
Apidog CLI Mock, spesifikasyon ve testleri tek projede yönetme npm install -g apidog-cli Hayır (ücretsiz katman) Otomatik mock ve yönetilen beklentiler

Pratik karar akışı şöyledir:

  1. OpenAPI spesifikasyonunuz varsa: Prism veya Mockoon CLI kullanın.
  2. Henüz spesifikasyonunuz yoksa: json-server ile JSON dosyasından başlayın.
  3. Başlık, gövde veya sorgu parametresine göre kesin eşleştirme gerekiyorsa: MockServer veya WireMock seçin.
  4. Mock, API tasarımı ve testlerin aynı projede yaşamasını istiyorsanız: Apidog'u değerlendirin.

Kaba kural: Hız için npx araçları, ayrıntılı eşleştirme için JVM sunucuları, tek bir entegre iş akışı için Apidog. Mock kullanıp kullanmamanız gerektiğinden emin değilseniz, API mock kullanım senaryoları rehberi hangi durumlarda yatırımın karşılığını verdiğini açıklar.

Sonuç

Hafif mock sunucusu seçimi şu soruya iner: Araca verecek neye sahipsiniz?

  • Bir OpenAPI spesifikasyonu: Prism veya Mockoon CLI
  • Boş bir başlangıç noktası: json-server
  • Katı ve ayrıntılı eşleştirme kuralları: MockServer veya WireMock
  • Tasarım, mock ve testleri tek yerde yönetme ihtiyacı: Apidog

Bu altı aracın tamamı terminalden çalışır ve CI işlerine eklenebilir. Önce senaryonuzu karşılayan en küçük aracı seçin; yalnızca gerçekten ihtiyaç duyduğunuzda daha ağır yapılandırmalara geçin.

Entegre yaklaşımı denemek için Apidog'u indirin ve API tasarımınızdan mock sunucusu oluşturun.

Top comments (0)