DEV Community

Cover image for Ücretsiz Açık Kaynak API Maketleme CLI Araçları
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Ücretsiz Açık Kaynak API Maketleme CLI Araçları

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.

Apidog'u bugün deneyin

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.

Hızlı başlangıç

npm install -g @stoplight/prism-cli

prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.

Ortam dosyasından başlatma

npm install -g @mockoon/cli

mockoon-cli start --data ./environment.json --port 3000
Enter fullscreen mode Exit fullscreen mode

OpenAPI dosyasını doğrudan da kullanabilirsiniz:

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

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
Enter fullscreen mode Exit fullscreen mode

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.

Hızlı başlangıç

Önce bir db.json oluşturun:

{
  "posts": [
    {
      "id": 1,
      "title": "İlk gönderi"
    }
  ]
}
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 aşağıdaki endpoint’leri kullanabilirsiniz:

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

Yeni kayıt oluşturmak 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

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.

Docker ile başlatma

docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
Enter fullscreen mode Exit fullscreen mode

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"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Mock endpoint’i test edin:

curl http://localhost:8080/hello
Enter fullscreen mode Exit fullscreen mode

Yanıt:

world
Enter fullscreen mode Exit fullscreen mode

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.

Docker ile başlatma

docker run -d --rm -p 1080:1080 mockserver/mockserver
Enter fullscreen mode Exit fullscreen mode

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\"}"
    }
  }'
Enter fullscreen mode Exit fullscreen mode

Endpoint’i çağırın:

curl http://localhost:1080/order
Enter fullscreen mode Exit fullscreen mode

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.

Hepsi bir arada imajla başlatma

docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Enter fullscreen mode Exit fullscreen mode

Tarayıcıda aşağıdaki adresi açın:

http://localhost:8585
Enter fullscreen mode Exit fullscreen mode

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=...
Enter fullscreen mode Exit fullscreen mode

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-cli tek 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-server daha 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:

  1. OpenAPI dosyanızı doğrudan uygulayan bir mock istiyorsanız: Prism ile başlayın.
  2. Arka uç gelmeden önce durumlu CRUD gerekiyorsa: json-server en hızlı başlangıç seçeneklerinden biridir.
  3. Hata, gecikme, proxy veya kaydet-oynat içeren testler gerekiyorsa: WireMock veya MockServer kullanın.
  4. Birden fazla protokol ve merkezi sözleşme testi gerekiyorsa: Microcks değerlendirin.
  5. 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)