TypeScript ile tRPC: API Geliştirmeyi Basitleştirin

Bir API oluşturmak genellikle REST veya GraphQL arasında bir seçim yapmak anlamına gelir. Rotaları ayarlamak, şemaları yönetmek ve frontend ile backend arasında tipleri senkronize etmek için zaman harcarsınız. Her iki uçta da TypeScript kullanıyorsanız, bu süreç ağır hissettirir. Sonuçta aynı tipleri iki kez yazmak zorunda kalırsınız.

tRPC bu iş akışını değiştirir. Ayrı bir API sözleşmesine (contract) olan ihtiyacı ortadan kaldırır. Bunun yerine, sunucunuz ve istemciniz arasında tipleri otomatik olarak paylaşmak için TypeScript kullanır.

Neden tRPC kullanmalısınız?

  • Manuel tip senkronizasyonu yok: Sunucuda bir fonksiyon yazarsınız ve istemci giriş ve çıkış tiplerini anında bilir.
  • Kod üretimi (code generation) yok: Tipleri oluşturmak için ekstra araçlar çalıştırmanıza gerek yoktur.
  • Şema sapması (schema drift) yok: İstemci doğrudan sunucu tiplerini kullandığı için frontend'iniz backend'inizle senkronize kalır.
  • Daha hızlı geliştirme: Bir ağ isteği yapmaktan ziyade, yerel bir dosyadaki fonksiyonu çağırıyormuşsunuz gibi hissettirir.

Geleneksel yöntemlerin dezavantajları vardır. REST, manuel fetch çağrıları ve yinelenen tipler gerektirir. GraphQL bir şema sağlar ancak resolver'lar ve kod üretimi (codegen) ile karmaşıklık ekler.

tRPC, backend'inizi tip güvenli (type-safe) fonksiyonlar koleksiyonu olarak ele alır. Router'lar içinde prosedürler tanımlarsınız. İstemci, router tipinizi içe aktarır ve bu prosedürleri doğrudan çağırır.

Örnek akış:

  1. Sunucuda doğrulama (Zod gibi) ile bir prosedür tanımlayın.
  2. Router tipini dışa aktarın (export).
  3. O prosedürü istemci tarafında tam otomatik tamamlama ve tip güvenliği ile çağırın.

tRPC ne zaman kullanılmalı:

  • Hem frontend hem de backend TypeScript kullanıyorsa.
  • Yığının (stack) her iki tarafını da siz kontrol ediyorsanız.
  • Dahili araçlar, admin panelleri veya full-stack Next.js uygulamaları geliştiriyorsanız.
  • Bir monorepo içinde çalışıyorsanız.

tRPC ne zaman kaçınılmalı:

  • Birçok farklı kullanıcı için halka açık (public) bir API oluşturuyorsanız.
  • İstemcileriniz Python veya Go gibi farklı diller kullanıyorsa.
  • Karmaşık API versiyonlamasına ihtiyacınız varsa.

tRPC her senaryoda REST veya GraphQL'in yerini almaz. Yığınınız birleşik olduğunda hız ve güvenlik sağlayan bir araçtır. API sınırlarının yarattığı sürtünmeyi ortadan kaldırır ve mantık (logic) yazmaya odaklanmanızı sağlar.

Kaynak: https://dev.to/geekyants/trpc-in-typescript-simplify-api-development-without-boilerplate-3lm3