tRPC Mimarisi
tRPC'nin API şeması tekrarını nasıl ortadan kaldırdığını öğrenin.
tRPC Mimarisi, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.
Uçtan Uca Sorun
Tipik bir web uygulamasında sunucu bir API tanımlar ve istemci onu çağırır. Türlerini eşzamanlı tutmak zordur: sunucudaki bir alanı değiştirdiğinizde istemci çalışma zamanında sessizce bozulur. tRPC, türleri kod üretmeden doğrudan paylaşarak bu sorunu çözer.
// Server: returns { id: number; name: string }
// Client: must know that shape exactly
// Without sync: runtime errors when they drifttRPC Nedir
tRPC, TypeScript'te türleri tamamen belirlenmiş API'ler oluşturmak için kullanılan bir kütüphanedir. Sunucu yordamları tanımlar; istemci ise bunları yerel işlevlermiş gibi çağırır ve sunucu kodundan çıkarılan eksiksiz otomatik tamamlama ile tür denetiminden yararlanır.
// Client call looks like a local function:
// const user = await client.user.byId.query(1);
// user is typed automatically from the serverKod Üretimi Yok
GraphQL veya OpenAPI iş akışlarının aksine tRPC, kod üretimi adımına ihtiyaç duymaz. Derlenecek bir şema dosyası veya oluşturulmuş bir istemci yoktur. Türler, derleme zamanında yalnızca TypeScript çıkarımı yoluyla sunucudan istemciye aktarılır.
// No .graphql files, no generated SDK
// Just import a type from the server packageYönlendirici Sözleşmedir
tRPC'nin merkezinde yönlendirici bulunur. Bu, yordamlar (sorgular ve değişiklikler) ağacıdır. Sunucudaki yönlendirici nesnesi ve özellikle ondan çıkarılan türü, istemciyle paylaşılan tek doğruluk kaynağıdır.
// appRouter (server) defines every procedure
// type AppRouter = typeof appRouter is the contractTürler Nasıl Paylaşılır
Sunucu, yönlendiricisinin yalnızca türünü, uygulamasını değil, dışa aktarır. İstemci bu türü içe aktarır ve bunu vekil istemcinin türünü belirlemek için kullanır. Sunucu kodu tarayıcıya gönderilmez; yalnızca derleme zamanında silinen türler paylaşılır.
// server.ts
export type AppRouter = typeof appRouter;
// client.ts
import type { AppRouter } from '../server';Sorgular ve Mutasyonlar
Prosedürler iki ana türe ayrılır. Bir sorgu verileri okur ve genellikle eş etkilidir. Bir mutasyon verileri değiştirir. Bu ayrım, önbelleğe alma ve HTTP davranışlarıyla eşleşir ve istemcinin bunları çağırma biçimini belirler.
// client.user.list.query() -> read
// client.user.create.mutate(...) -> writeÇalışma Zamanı ve Türler
tRPC'nin iki katmanı vardır. Çalışma zamanında çağrılar, bir uyarlayıcı tarafından işlenen HTTP üzerinden JSON olarak iletilir. Derleme zamanında paylaşılan AppRouter türü, her çağrının bütünüyle denetlenmesini sağlar. Çalışma zamanı katmanı yalındır; asıl değer tür güvenliğidir.
// Runtime: POST /trpc/user.byId body: {"input":1}
// Types: client.user.byId.query(1) is checked end to endTür Çıkarımı Neden Kod Üretiminden Üstündür
Türler çıkarıldığı için unutulacak bir eşitleme adımı yoktur. Bir prosedürü düzenlediğinizde istemci değişikliği hemen yansıtır; çağrıların artık eşleşmediği yerlerde kırmızı dalgalı çizgiler görünür. Geri bildirim anında gelir ve düzenleyicinizde görünür.
// Add a required input field on the server
// -> every client call missing it becomes a type errortRPC Nerede Kullanılır
tRPC, istemci ile sunucunun aynı kod tabanını paylaştığı tam yığın TypeScript tek depolu projelerde, örneğin Next.js uygulamalarında, öne çıkar. Başka diller tarafından kullanılan genel API'ler için uygun değildir; bunlar için OpenAPI veya GraphQL gibi dilden bağımsız bir şema kullanmak istersiniz.
// Great: Next.js app, shared types, internal API
// Not ideal: public API for non-TS consumersGenel Çerçeve
Akış şöyledir: bir yönlendiricide prosedürler tanımlanır, yönlendirici türü dışa aktarılır, bir HTTP uyarlayıcısı bağlanır ve bu türden türü belirlenmiş bir istemci oluşturulur. Her çağrı, hiç kod üretilmeden sunucu sözleşmesine göre denetlenir. Sonraki derslerde her parça ayrı ayrı oluşturulacaktır.
// Roadmap:
// 1. initTRPC + procedures + appRouter
// 2. export AppRouter, create typed client
// 3. context + middleware for authDerleyiciye Güvenin
Zihniyet değişikliği şudur: API sözleşmesi belgelerde veya yalnızca çalışma zamanı doğrulamasında değil, türlerde yaşar ve derleyici tarafından uygulanır. Derleniyorsa istemci ile sunucu aynı fikirde demektir. Bu güvenceye "uçtan uca tür güvenliği" denir.
// If client.ts compiles, it matches the current server.Kısa Değerlendirme
tRPC mimarisi hakkındaki anlayışınızı sınayın.
Özet
tRPC modelini öğrendiniz.
- Yönlendirici sözleşmedir; yönlendiricinin türü tek doğruluk kaynağıdır.
- Sunucu yalnızca
AppRoutertürünü, kodu değil, dışa aktarır. - Sorgular okur, mutasyonlar yazar; çalışma zamanı HTTP üzerinden JSON kullanır.
- Tür güvenliği, kod üretimi adımı olmadan tür çıkarımından gelir.
Sıradaki konu: yönlendiricileri ve prosedürleri tanımlamak.
Sıkça Sorulan Sorular
“tRPC Mimarisi” dersi ücretsiz mi?
Evet — “tRPC Mimarisi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.
“tRPC Mimarisi” dersinde ne öğreneceğim?
tRPC'nin API şeması tekrarını nasıl ortadan kaldırdığını öğrenin. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“tRPC Mimarisi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- tRPC Mimarisi
- Yönlendiricileri ve Prosedürleri Tanımlama
- İstemci-Sunucu Tür Çıkarımı
- Ara Katman ve Bağlam