API tRPC Selamat Jenis dari Hujung ke Hujung · Pelajaran

Memperluas Fungsi tRPC

Temui cara lanjutan untuk memperluas tRPC dengan pembina tersuai, pemalam dan integrasi dengan pustaka lain.

Pelajaran 3 daripada 411 langkah

Memperluas Fungsi tRPC ialah pelajaran API tRPC Selamat Jenis dari Hujung ke Hujung percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran API tRPC Selamat Jenis dari Hujung ke Hujung, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus API tRPC Selamat Jenis dari Hujung ke Hujung merangkumi sejumlah 4 pelajaran.

Memperluas Teras tRPC

tRPC sangat berkuasa sejak awal, tetapi kadangkala aplikasi anda memerlukan kawalan tersuai dan tingkah laku khusus. Pelajaran ini akan menunjukkan cara memperluas tRPC melangkaui perisian tengah asas.

Kami akan meneroka pembina prosedur tersuai untuk mencipta titik akhir API khusus dan membincangkan cara mengintegrasikan tRPC dengan lancar bersama pustaka lain seperti ORM.

Mengapa Pembina Tersuai?

Perisian tengah standard amat berguna untuk menggunakan logik umum pada semua prosedur atau sekumpulan prosedur, seperti pengesahan atau pencatatan.

Namun, bagaimana jika anda perlu mentakrifkan jenis prosedur tertentu, seperti adminProcedure atau publicProcedure, yang setiap satunya mempunyai sifat konteks unik atau rantaian perisian tengah yang telah diprakonfigurasi? Pembina prosedur tersuai amat sesuai untuk tujuan ini!

Membina Pembina dengan `createBuilder`

tRPC menyediakan utiliti createBuilder untuk membantu anda mentakrifkan kilang prosedur sendiri. Pembina ini boleh memperluas konteks (ctx), menambah metadata atau menggunakan perisian tengah secara automatik pada mana-mana prosedur yang dibina dengannya.

Ia membolehkan anda mengabstrakkan logik persediaan umum kepada corak yang boleh diguna semula, lalu menjadikan takrifan API anda lebih kemas dan konsisten.

Contoh Pembina: Prosedur Pentadbir

Mari cipta adminProcedure. Pembina ini memastikan pengguna bukan sahaja telah log masuk (melalui protectedProcedure), tetapi juga mempunyai bendera isAdmin yang ditetapkan dalam konteksnya. Logik ini kemudiannya digunakan secara automatik pada mana-mana prosedur yang menggunakan adminProcedure.

// Minimal tRPC-like setup for demonstration
type Context = { user?: { id: number; isAdmin?: boolean } };

const mockProcedure = {
  use: (middleware: any) => ({
    use: (nextMiddleware: any) => ({
      _isBuilder: true,
      _middlewares: [middleware, nextMiddleware]
    }),
    _isBuilder: true,
    _middlewares: [middleware]
  }),
  _isBuilder: true,
  _middlewares: []
};

const t = {
  procedure: mockProcedure
};

// --- Actual tRPC Builder Code ---
const protectedProcedure = t.procedure.use(async ({ ctx, next }: any) => {
  if (!ctx.user) {
    throw new Error('Not authenticated');
  }
  return next({ ctx: { ...ctx, user: ctx.user } });
});

const adminProcedure = protectedProcedure.use(async ({ ctx, next }: any) => {
  if (!ctx.user?.isAdmin) {
    throw new Error('Not an admin!');
  }
  return next({ ctx: { ...ctx, user: ctx.user } });
});

console.log("Protected procedure builder defined.");
console.log("Admin procedure builder defined.");
console.log("Admin procedure has " + adminProcedure._middlewares.length + " middlewares.");

Manfaat Pembina Tersuai

Pembina tersuai menawarkan beberapa kelebihan penting:

  • Boleh Diguna Semula: Takrifkan logik kompleks sekali dan gunakannya merentas banyak prosedur.
  • Keselamatan Jenis: Kuatkuasakan jenis konteks tertentu untuk kumpulan prosedur.
  • Kebolehbacaan: Prosedur menjadi jelas dengan sendirinya (contohnya, adminProcedure.query(...) menunjukkan keperluannya dengan jelas).
  • Konsistensi: Pastikan semua prosedur daripada jenis tertentu mematuhi peraturan dan pemeriksaan khusus.

Integrasi dengan Pustaka Luaran

tRPC tidak menetapkan pendirian khusus tentang lapisan data anda. Ini bermakna anda boleh mengintegrasikannya dengan mudah bersama mana-mana ORM (seperti Prisma atau Drizzle), client pangkalan data atau perkhidmatan API luaran pilihan anda.

Kunci kepada integrasi yang lancar ini biasanya ialah memulakan tika client tersebut dan melampirkannya pada konteks tRPC anda. Dengan cara ini, semuanya tersedia untuk semua prosedur anda.

Memberikan Konteks kepada ORM (Prisma)

Corak yang sangat biasa dalam aplikasi tRPC ialah memulakan client ORM anda (contohnya, Prisma Client) dan kemudian melampirkan tika tersebut pada objek konteks tRPC anda.

Ini membolehkan semua prosedur tRPC anda mengakses client pangkalan data melalui ctx.prisma, memusatkan pengurusannya dan menyediakan keselamatan jenis.

// Minimal tRPC-like setup for demonstration
type MockPrismaClient = {
  user: {
    findUnique: (args: { where: { id: number } }) => { id: number; name: string } | null;
  };
};

type ContextWithPrisma = {
  prisma: MockPrismaClient;
};

const mockProcedure = {
  query: (handler: (opts: { ctx: ContextWithPrisma }) => any) => ({
    _handler: handler,
    _isQuery: true
  })
};

const t = {
  procedure: mockProcedure
};

// --- Actual tRPC Context Integration ---
const publicProcedure = t.procedure;

const getUserProcedure = publicProcedure.query(async ({ ctx }) => {
  const user = await ctx.prisma.user.findUnique({ where: { id: 1 } });
  return user ? `User name: ${user.name}` : 'User not found.';
});

// --- Demonstration (conceptual execution) ---
const mockPrisma: MockPrismaClient = {
  user: {
    findUnique: (args) => {
      if (args.where.id === 1) {
        return { id: 1, name: 'Alice' };
      }
      return null;
    }
  }
};

const mockContext: ContextWithPrisma = { prisma: mockPrisma };

console.log("Prisma client attached to context type.");
console.log("Conceptual handler output for user 1:");
console.log(await getUserProcedure._handler({ ctx: mockContext }));

Kuasa Pemalam (Konseptual)

Selain pembina, tRPC menawarkan API createTRPCPlugin yang bersifat eksperimen. Pemalam menyediakan cangkuk yang lebih mendalam ke dalam dalaman tRPC, lalu membolehkan anda menyesuaikan pemformatan ralat, menambah pengubah data tersuai atau mengubah kitar hayat permintaan dengan cara lanjutan.

Pemalam direka untuk peluasan peringkat teras yang benar-benar kompleks dan mempengaruhi cara tRPC beroperasi pada tahap asas.

Bila Hendak Menggunakan Setiap Satu?

Pilihan antara pembina tersuai dengan pemalam bergantung pada keperluan peluasan anda:

  • Pembina Tersuai: Terbaik untuk mentakrifkan jenis prosedur tertentu, memperkaya objek konteks atau menggunakan rantaian perisian tengah umum. Pembina ini beroperasi pada peringkat takrifan prosedur.
  • Pemalam: Sesuai untuk mengubah tingkah laku teras tRPC, seperti pengendalian ralat tersuai, pensirian/penyahsirian data atau integrasi dengan sistem luaran pada peringkat global dan asas.

Semakan Pantas

Antara berikut, yang manakah merupakan manfaat utama menggunakan pembina prosedur tRPC tersuai?

Ringkasan Peluasan

Dalam pelajaran ini, kami telah meneroka cara memperluas keupayaan tRPC. Kami belajar menggunakan pembina prosedur tersuai untuk mencipta prosedur khusus yang boleh diguna semula seperti adminProcedure, sekali gus meningkatkan kebolehgunaan semula, keselamatan jenis dan konsistensi.

Kami juga melihat cara mengintegrasikan pustaka luaran seperti ORM dengan melampirkannya pada konteks tRPC. Akhir sekali, kami menyentuh potensi lanjutan pemalam tRPC untuk pengubahsuaian teras yang lebih mendalam. Alat-alat ini membolehkan anda menyesuaikan tRPC dengan keperluan unik aplikasi anda.

Percuma untuk bermula

Pelajari API tRPC Selamat Jenis dari Hujung ke Hujung dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
10
Pelajaran
40

Soalan Lazim

Adakah pelajaran “Memperluas Fungsi tRPC” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran API tRPC Selamat Jenis dari Hujung ke Hujung, termasuk “Memperluas Fungsi tRPC”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus API tRPC Selamat Jenis dari Hujung ke Hujung merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Memperluas Fungsi tRPC”?

Temui cara lanjutan untuk memperluas tRPC dengan pembina tersuai, pemalam dan integrasi dengan pustaka lain. Anda berlatih API tRPC Selamat Jenis dari Hujung ke Hujung menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan API tRPC Selamat Jenis dari Hujung ke Hujung?

Tiada pengalaman terdahulu diperlukan. Pembelajaran API tRPC Selamat Jenis dari Hujung ke Hujung di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Memperluas Fungsi tRPC” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran API tRPC Selamat Jenis dari Hujung ke Hujung ini?

Ya. Setiap pelajaran API tRPC Selamat Jenis dari Hujung ke Hujung menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menyediakan Monorepo tRPC
  2. Perkongsian Kod dan Kebolehgunaan Semula
  3. Memperluas Fungsi tRPC
  4. Pemberian Versi dan Penerbitan Pakej tRPC Dikongsi
← Kembali ke API tRPC Selamat Jenis dari Hujung ke Hujung