14 puan yazan samchon 2023-07-30 | 6 yorum | WhatsApp'ta paylaş

swagger.json dosyasından TypeScript SDK ve mock simülatörü üretme aracı

Buradaki SDK (Software Development Kit), şu işlevleri içerir:

  • fetch fonksiyonları koleksiyonu
  • DTO yapıları
  • Mock simülatörü

SDK’yı derleyip kullandığınızda, frontend (istemci) geliştiricisinin Swagger dokümanını okuyup fetch fonksiyonlarını ve DTO tiplerini elle yeniden yazmasına kıyasla çok daha pratik ve güvenlidir; ayrıca msw ile backend sunucusunu mock’lama işini de otomatikleştirerek üretkenliği artırır.

6 yorum

 
roxie 2023-08-05

Güzel yazı, ilginç yaklaşım için teşekkürler. Bu benim kişisel tercihim olabilir ama yukarıdaki ana metin kısmında, "şu tür bir kodu eklerseniz, önceden böyle olan şey, şöyle olur" şeklinde örnekler olsaydı daha iyi olurdu diye düşünüyorum. Mevcut metin şu haliyle neredeyse hiç dikkatimi çekmiyor.

 
kuber 2023-07-30

TS ekosisteminde, belgelere bakıp ilgili tipleri ve fonksiyonları elle tanımlamak yaygın bir şey mi?

 
hyeonss0417 2023-07-31

Bununla ilgili olarak, TypeScript tiplerine dayanarak OpenAPI Spec'i otomatik olarak çıkaran Tspec adlı bir kütüphane de var hehe

https://github.com/ts-spec/tspec

 
samchon 2023-07-31

TS için openapi-generator'ın ürettiği kod pek kullanışlı değil.

 
kunggom 2023-07-30

Her hâlükârda, bu yazıyı paylaşan samchon adlı kişinin bizzat yaptığı aracın kullanım şekli gibi görünüyor; öyleyse bunun Show GN tarafına gitmesi gerekmiyor mu diye de düşündürüyor.

Neyse, swagger.json dosyasıyla TypeScript istemcisinde otomatik tamamlamayı mümkün kılması iyi bir fikir gibi görünüyor. Acaba bunu NestJS dışındaki başka backend stack'lerinde de kullanmak mümkün mü?

 
samchon 2023-07-30

Dil ya da framework fark etmeksizin, OpenAPI v3.0 spesifikasyonundaki swagger.json dosyasını oluşturabilmeniz yeterli.

Daha önce de blog yazısını Show GN etiketiyle paylaşmıştım; ancak o zaman yönetici, Show GN'nin yalnızca GitHub veya proje bağlantılarının paylaşıldığı bir yer olduğunu söylemiş ve yazıyı genel gönderiye taşımıştı.