Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı
Şemadan istemciye kadar tek bir doğruluk kaynağını koruyun
Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. 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.
Schema Öncelikli Nedir?
Schema öncelikli yaklaşımda GraphQL schema, tek doğru bilgi kaynağıdır. Ön yüz türleri, arka uç çözücüleri ve API sözleşmeleri schema'dan türetilir; böylece hiçbir katman eşzamanlılığını kaybetmez.
# The workflow:
# 1. Define schema (.graphql or SDL)
# 2. Generate server resolver types
# 3. Generate client operation types
# 4. Both sides automatically stay in syncSchema Tanımlama
GraphQL schema'nızı SDL (.graphql dosyaları) içinde yazın ve istemci ile sunucu arasındaki sözleşme olarak depoya kaydedin.
# schema.graphql
type User {
id: ID!
name: String!
email: String!
}
type Query {
user(id: ID!): User
}Sunucu: Çözücü Türlerini Oluşturma
Schema'dan türleri belirlenmiş çözücü imzaları oluşturmak için typescript-resolvers eklentisiyle kod oluşturmayı çalıştırın.
# Server codegen step
npx graphql-codegen --config codegen.server.ymlİstemci: İşlem Türlerini Oluşturma
.graphql işlem dosyalarından türleri belirlenmiş kancalar oluşturmak için kod oluşturmayı typescript-operations ve Apollo/urql eklentileriyle çalıştırın.
# Client codegen step
npx graphql-codegen --config codegen.client.ymlBozan Değişiklikleri Belirleme
Bozan schema değişikliklerini (alanların kaldırılması, türlerin değiştirilmesi) üretim ortamına ulaşmadan önce belirlemek için graphql-inspector kullanın.
npx graphql-inspector diff ./api/schema.graphql ./api/schema.new.graphql
# Reports: BREAKING: Field 'User.email' was removedSchema Kayıt Defteri
Bir schema kayıt defteri (Apollo Studio, Hive), schema sürümlerini saklar, zaman içindeki değişiklikleri izler ve CI sırasında bozan değişiklikler konusunda uyarır.
# Push schema to Apollo Studio:
npx apollo schema:push --endpoint https://api.example.com/graphqlSchema ile Sahte Veri Oluşturma
Gerçek bir sunucu olmadan istemci geliştirmek için schema kullanarak sahte veriler oluşturun ve sahte verilerin schema ile uyumlu kalmasını sağlayın.
import { buildClientSchema, introspectionFromSchema } from "graphql";
import { addMocksToSchema } from "@graphql-tools/mock";
const schema = buildClientSchema(introspectionResult);
const mockedSchema = addMocksToSchema({ schema });Alternatif Olarak tRPC
Yalnızca TypeScript kullanılan projelerde tRPC, bir schema dili olmadan uçtan uca tür güvenliği sağlar; sunucu router türü IS istemci sözleşmesidir.
// Server: router infers types
const router = t.router({ getUser: t.procedure.query(() => fetchUser()) });
// Client: types flow automatically via inference
const { data } = trpc.getUser.useQuery();Doğrulama için Zod + tRPC
Zod schema tanımlarını tRPC girdi doğrulayıcılarıyla birleştirerek çalışma zamanında doğrulama ve tek bir tanımdan derleme zamanında türler elde edin.
const createUser = t.procedure
.input(z.object({ name: z.string(), email: z.string().email() }))
.mutation(({ input }) => saveUser(input));
// input: { name: string; email: string } — from Zod schemaCI: Tam Schema Güvenliği İşlem Hattı
Schema öncelikli güvenlik için eksiksiz bir CI işlem hattı: schema için lint denetimi yapın → bozan değişiklikleri denetleyin → kod oluşturmayı çalıştırın → tür denetimi yapın → sınamaları çalıştırın.
# .github/workflows/schema.yml
- run: npx graphql-inspector validate ...
- run: npx graphql-codegen --check
- run: npx tsc --noEmit
- run: npm testÖzet: Schema Öncelikli İş Akışı
Schema öncelikli TypeScript: SDL'yi tanımlayın → sunucu çözücü türlerini oluşturun → istemci işlem türlerini oluşturun → CI içinde bozan değişiklikleri belirleyin. Schema, tüm tür güvenliği katmanları için tek doğru bilgi kaynağıdır.
Hızlı Kontrol
Schema öncelikli bir iş akışında GraphQL schema'nın rolü nedir?
Öğrendikleriniz
Schema öncelikli TypeScript iş akışları tüm türleri GraphQL schema'dan türetir. Sunucu için çözücü türlerini, istemci için işlem türlerini oluşturun; CI içinde bozan değişiklikleri belirleyin ve schema'yı tüm katmanlar arasındaki sözleşme olarak koruyun.
Sıkça Sorulan Sorular
“Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı” dersi ücretsiz mi?
Evet — “Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı” 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.
“Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı” dersinde ne öğreneceğim?
Şemadan istemciye kadar tek bir doğruluk kaynağını koruyun 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 4. dersidir.
“Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı” 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
- GraphQL Şemasından TypeScript Türlerine
- GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler
- Apollo ve urql ile Türlendirilmiş GraphQL İstemcisi
- Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı