Karşı geliştirmek için sahte bir API'ye ihtiyacınız var. Arka uç hazır değil, veya üçüncü taraf hizmeti oran sınırına takılmış, ya da sadece testlerinizin canlı bir sunucuya vurmadan çalışmasını istiyorsunuz. Olağan cevap bir "mock"tur (sahte servis). Soru ise böyle bir mock'u nasıl ayağa kaldıracağınızdır.
Yönlendirmeleri ve önceden tanımlanmış yanıtları belirlemek için bir GUI (Grafik Kullanıcı Arayüzü) üzerinden tıklayabilirsiniz. Bu bir kez iyi olabilir. Ancak masaüstü uygulamasında elinizle oluşturduğunuz bir mock'u yeniden üretmek, sürümlemek zordur ve CI (Sürekli Entegrasyon) veya bir yapay zeka kodlama aracının kendi başına yeniden oluşturması imkansızdır. Komut satırından tanımladığınız bir mock farklıdır. Bir betikte bir komut, bir ardışık düzende bir adım, bir aracının çalıştırabileceği bir satırdır. Sizin yazdığınızı bir makine de yazabilir.
Bu rehber iki yolu ele alıyor. Birincisi, genel açık kaynak yolu: doğrudan bir dosyadan çalıştırdığınız tek ikilik mock sunucuları, böylece bir özellik dosyası veya bir JSON dosyası tek bir komutla canlı bir uç nokta haline gelir. Ardından farklı çalışan ve kendi terimleriyle anlaşılması gereken Apidog CLI yolu. Önce seçeneklerin genel görünümünü istiyorsanız, en iyi API mock araçları derlememiz ve REST API mocking araçları rehberimiz size daha geniş bir bakış açısı sunar.
Genel yol: Bir dosyadan mock sunucusu çalıştırma
Klasik CLI mock'u, bir dosyayı işaret ettiğiniz küçük bir ikiliktir. Ona bir özellik dosyası veya veri dosyası verirsiniz ve yerel bir portta gerçek bir HTTP uç noktası sunar. Proje yok, giriş yok, hesap yok. Bu araçlar tek bir şey yapar: bir dosyayı çağırabileceğiniz sahte bir API'ye dönüştürür. Üçü neredeyse her durumu kapsar.
Prism: bir OpenAPI spesifikasyonu sunma
Zaten bir OpenAPI dosyanız varsa, Stoplight'tan Prism çalıştırabileceğiniz en az çaba gerektiren mock'tur. paths, örneklerinizi ve şemalarınızı okur, ardından sözleşmeye uyan yanıtları sunar.
npx @stoplight/prism-cli mock ./openapi.yaml
Bu, spesifikasyonunuzdaki her işlemin bağlandığı 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 bırakmışsanız şemadan geçerli rastgele bir tane oluşturur. Ayrıca gelen istekleri spesifikasyona karşı doğrular, bu nedenle hatalı bir çağrı sessizce geçmek yerine uygun bir 422 alır. Canlı olup olmadığını kontrol etmek için çağırın:
curl http://127.0.0.1:4010/orders/123
Prism durumsuz olduğundan, bir POST hiçbir şeyi kalıcı kılmaz. Mock'un sözleşmeye sadık kalmasını istediğinizde amaç budur. Global bir kurulum için, npm install -g @stoplight/prism-cli komutunu çalıştırın ve npx'i atlayın.
Mockoon CLI: bir veri dosyasını başsız (headless) çalıştırma
Mockoon CLI, ücretsiz Mockoon masaüstü uygulamasından dışa aktardığınız bir veri dosyasından veya basit bir OpenAPI spesifikasyonundan bir mock ç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 ./env.json
--data'yı bir Mockoon ortam dosyasına veya bir OpenAPI JSON/YAML dosyasına işaret edin ve varsayılan olarak 3000 numaralı porttan hemen hizmet verir. Portu değiştirmek için --port ekleyin. Veri dosyası daha eski bir Mockoon sürümünden geldiyse, CLI orijinal dosyaya dokunmadan onu bellekte taşır. Kalıcı bir mockoon-cli komutu için npm install -g @mockoon/cli ile global olarak kurun. Bu, çıplak bir spesifikasyonun size verdiğinden daha zengin, elle ayarlanmış rotalar istediğinizde ve yine de GUI olmadan çalıştırmak istediğinizde iyi bir seçenektir. RESTful API için hafif bir mock sunucusu genellikle buraya düşer.
json-server: bir JSON'dan sahte bir REST API oluşturma
Henüz bir spesifikasyonunuz yoksa, json-server en hızlı yoldur. Verilerinizi açıklayan basit bir JSON dosyası yazarsınız ve etrafında tam bir REST API oluşturur.
npx json-server db.json
posts dizisi içeren bir db.json verildiğinde, bu http://localhost:3000/posts adresini gerçek GET, POST, PUT, PATCH ve DELETE ile sunar. Bir POST aslında bir kayıt ekler ve onu dosyaya geri yazar, böylece Prism'in size sunmayacağı durumlu davranışa ücretsiz sahip olursunuz. Ayrıca sorgu parametreleri aracılığıyla filtreleme, sıralama ve sayfalama elde edersiniz. PATH'inizde her zaman olmasını istiyorsanız npm install -g json-server ile global olarak kurun.
Bu açık kaynak rotasıdır. Her araç tek bir ikilik, tek bir dosyadan çalışır ve başka hiçbir şeye ihtiyaç duymaz. Dezavantajı ise her birinin kendi başına bir ada olmasıdır. Mock, gerçek tasarımınızdan, testlerinizden ve belgelerinizden ayrı yaşar ve dosyaları ile çalışan süreçleri kendiniz senkronize tutarsınız. Tam istek eşleştirme veya tekrar oynatma (replay) ihtiyacınız varsa, MockServer ve WireMock, Java çalışma zamanının maliyetiyle daha derine iner.
Apidog CLI yolu: spesifikasyonu içe aktarın, beklentileri betikleyin
Apidog farklı bir şekilde mock yapar ve bunu doğru anlamak kafa karışıklığını önler. apidog CLI, bir dosyadan yerel bir mock sunucusu başlatmaz. apidog mock ./openapi.yaml diye bir komut yoktur. Bunun yerine, Apidog sizin için mock'u barındırır ve CLI, ona bir spesifikasyon beslemenizin ve özel yanıtları betiklemenizin yoludur.
Önce dürüst bir not. Apidog açık kaynak değildir; ücretsiz katmanı olan ticari bir üründür. Bu ücretsiz katman artı CLI'ın size sağladığı şey entegre bir projedir, böylece mock, tasarım ve testler üç ayrı dosya ve üç ayrı süreç yerine tek bir doğruluk kaynağını paylaşır. Tek bir dosyadan tek kullanımlık bir mock ihtiyacınız varsa, daha hafif bir araç kazanır. Mock'unuzun değişirken gerçek API'nizle uyumlu kalması gerekiyorsa, okumaya devam edin.
Önce kurun ve kimlik doğrulaması yapın (Apidog CLI kurulum rehberi token kurulumunu kapsar):
npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
Barındırılan akıllı mock'lar elde etmek için bir spesifikasyon içe aktarın
İlk adım, API'nizi bir projeye dahil etmektir. Bir OpenAPI dosyasını içe aktarın ve Apidog her uç nokta için otomatik olarak bir mock URL'si oluşturur.
apidog import --project <PROJECT_ID> --format openapi --file ./openapi.json
Apidog'un Prism ve json-server'dan farklılaştığı nokta burasıdır. Bir sunucu çalıştırmazsınız; içe aktarma size her işlem için barındırılan bir akıllı mock sağlar. Akıllı mock, şemanızın alan türlerini ve adlarını okur, böylece bir email alanı makul bir e-posta ve bir createdAt gerçekçi görünen bir zaman damgası döndürür, rastgele bir dize değil. apidog import ayrıca Swagger 2.0, Postman ve Apidog formatlarını da kabul eder, böylece mevcut bir tanım tek bir komutla canlı mock'lara dönüşür.
Apidog mock ile özel yanıtları betikleme
Otomatik olarak oluşturulan mock'lar yaygın durumu kapsar. Belirli bir istek için belirli bir yanıta ihtiyacınız olduğunda, örneğin bir kullanıcı kimliği için 200 ve diğeri için 404, bir mock beklentisi eklersiniz. apidog mock komut grubu bunu yönetir ve bu beklentiler üzerinde CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlemleridir, başlattığınız bir sunucu değil.
apidog mock --help
apidog mock list --project <PROJECT_ID>
apidog mock list --project <PROJECT_ID> --http-api-id <ENDPOINT_ID>
Listeleme yapılandırılmış JSON döndürür, böylece bir beklentinin ID'sini bulmak ve bir sonraki komuta beslemek için jq üzerinden aktarabilirsiniz. Birini okumak, değiştirmek veya kaldırmak için:
apidog mock get --project <PROJECT_ID>
apidog mock update --project <PROJECT_ID> --file ./mock.json
apidog mock delete --project <PROJECT_ID>
create ve update alt komutları, beklentiyi açıklayan bir --file alır. Yazmadan önce şekli doğru bir şekilde oluşturun, bu bir sonraki adımda ele alınmıştır.
Beklenti dosyasını yazmadan önce doğrulayın
JSON'u elinizle tahmin etmeyin. CLI, her yazma işlemi için bir şema sağlar, böylece şekli alıp doldurursunuz ve gerçek yazmadan önce doğrulama yaparsınız. Hatalı bir beklenti sessizce inmek yerine hızlı bir şekilde başarısız olur.
apidog cli-schema get mock-create
apidog cli-schema validate mock-create --file ./mock.json
apidog mock create --project <PROJECT_ID> --file ./mock.json
Şemayı alın, mock.json dosyanızı eşleşecek şekilde yazın, doğrulayın, sonra oluşturun. Doğrulama sıfır olmayan bir çıkış döndürürse, hatalı bir dosya projenize ulaşmadan önce ardışık düzen durur. Güncellemeler için mock-update şema anahtarıyla aynı üç adımı çalıştırın. Her komut, size veya bir aracıya ne çalıştıracağını söyleyen agentHints.nextSteps bloğuyla JSON döndürür, bu da bu akışı sadece insanlar tarafından değil, AI kodlama araçları tarafından da kullanılabilir hale getirir. Kapsamlı Apidog CLI rehberi, komut gruplarının geri kalanını haritalandırır.
CI'a entegre etme
Her iki yol da bir ardışık düzene uyar, çünkü her komutun bir çıkış kodu ve metin çıktısı vardır. Aynı işte sunucu tabanlı bir mock ve bir entegrasyon testi şöyle görünebilir:
# Prism'i arka planda başlatın, sonra ona karşı testleri çalıştırın
npx @stoplight/prism-cli mock ./openapi.yaml &
PRISM_PID=$!
npm test
kill $PRISM_PID
Apidog akışı şekil olarak farklıdır: başlatılacak ve durdurulacak yerel bir süreç yoktur, çünkü mock barındırılır. Beklentileri bir kurulum adımı olarak doğrulayıp uygularsınız ve testleriniz doğrudan barındırılan mock URL'ine gider.
# beklentinin iyi biçimlendirilmiş olduğundan emin olun, sonra uygulayın
apidog cli-schema validate mock-create --file ./mock.json
apidog mock create --project <PROJECT_ID> --file ./mock.json
Her iki durumda da kimse bir düğmeye tıklamaz. CLI'dan mock yapmanın tüm nedeni budur: spesifikasyon odaklı bir ekip, bir CI işi ve bir yapay zeka aracısı aynı sahte API'yi aynı komutlarla kurabilir.
Yaygın aksaklıklar
apidog mock komutunun bir sunucu başlatmasını beklemek. Başlatmaz. apidog mock start, apidog mock serve veya apidog mock ./file.yaml gibi bir komut yoktur. Barındırılan mock'ları elde etmek için bir spesifikasyonu apidog import edersiniz ve apidog mock, bunların üzerindeki özel beklentileri yönetir. Bir dosyadan başlattığınız yerel bir süreç istiyorsanız, bu Prism, Mockoon CLI veya json-server'dır.
Bir yazma işleminde şema adımını atlamak. apidog mock create ve update bir --file alır ve yanlış bir şekil başarısız olur veya istemediğiniz bir şeyi yazar. Her zaman önce cli-schema get ve cli-schema validate komutlarını çalıştırın. Bu iki ek komut size bir hata ayıklama oturumundan tasarruf ettirir.
Spesifikasyonunuz ince olduğu için Prism'in boş görünmesi. Prism'in mock'u yalnızca örnekleriniz kadar iyidir. Bir yanıtın example'ı yoksa ve belirsiz bir şeması varsa, belirsiz veriler alırsınız. Spesifikasyona örnekler ekleyin ve mock daha keskin hale gelir.
Durumsuz bir araçtan durumlu beklentiler. Prism ve Apidog'un sözleşme mock'ları yazma işlemlerini kalıcı kılmaz. Yeni kaydı döndürmek için bir POST ve ardından GET'e ihtiyacınız varsa, json-server'a veya istediğiniz şekli döndüren bir Apidog beklentisine başvurun.
Özet
CLI'dan mock yapmak, tıklamalarla dolu bir işi, betikleyebileceğiniz, inceleyebileceğiniz ve CI'a veya bir aracıya verebileceğiniz komutlara dönüştürür. Açık kaynak yolu size bir dosyadan çalıştırdığınız tek ikilik sunucular sunar: OpenAPI spesifikasyonu için Prism, başsız bir veri dosyası için Mockoon CLI, JSON'dan anında REST API için json-server. Apidog yolu farklı çalışır; barındırılan akıllı mock'lar elde etmek için bir spesifikasyonu bir kez içe aktarırsınız, ardından apidog mock ve cli-schema doğrulama koruması ile özel yanıtları betiklersiniz.
Neye sahip olduğunuza ve mock'un nerede yaşaması gerektiğine göre seçiminizi yapın. Tek bir dosyadan tek kullanımlık bir sunucu istiyorsanız, açık kaynak araçları mükemmeldir. Mock'un tasarımınız ve testlerinizle tek bir projede uyumlu kalmasını istiyorsanız, Apidog'u indirin, CLI'yı kurun ve farenize dokunmadan mock'larınızı ayağa kaldırın.
