Hoppa till huvudinnehållet
Version: 10.x

Begrepp

Inofficiell Beta-översättning

Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →

Vad är RPC? Vilket förhållningssätt ska jag ha?

Det är bara funktioner

RPC står för "Remote Procedure Call" (fjärrproceduranrop). Det är ett sätt att anropa funktioner på en dator (servern) från en annan dator (klienten). Med traditionella HTTP/REST-API:er anropar du en URL och får ett svar. Med RPC anropar du en funktion och får ett svar.

ts
// HTTP/REST
const res = await fetch('/api/users/1');
const user = await res.json();
// RPC
const user = await api.users.getById({ id: 1 });
ts
// HTTP/REST
const res = await fetch('/api/users/1');
const user = await res.json();
// RPC
const user = await api.users.getById({ id: 1 });

tRPC (TypeScript Remote Procedure Call) är en implementation av RPC, designad för TypeScript-monorepos. Den har sin egen karaktär, men är i grunden RPC.

Tänk inte på HTTP/REST-implementeringsdetaljer

Om du inspekterar nätverkstrafiken i en tRPC-app ser du att det är ganska standardiserade HTTP-förfrågningar och svar, men du behöver inte tänka på implementeringsdetaljerna när du skriver din applikationskod. Du anropar funktioner och tRPC sköter resten. Du bör ignorera detaljer som HTTP-verb eftersom de bär mening i REST-API:er, medan de i RPC istället blir del av dina funktionsnamn, till exempel: getUser(id) istället för GET /users/:id.

Ordlista

Här nedanför följer termer som ofta används i tRPC-ekosystemet. Vi kommer att använda dessa genomgående i dokumentationen, så det är bra att bekanta sig med dem. De flesta av dessa begrepp har även egna sidor i dokumentationen.

TermDescription
Procedure ↗API endpoint - can be a query, mutation, or subscription.
QueryA procedure that gets some data.
MutationA procedure that creates, updates, or deletes some data.
Subscription ↗A procedure that creates a persistent connection and listens to changes.
Router ↗A collection of procedures (and/or other routers) under a shared namespace.
Context ↗Stuff that every procedure can access. Commonly used for things like session state and database connections.
Middleware ↗A function that can run code before and after a procedure. Can modify context.
Validation ↗"Does this input data contain the right stuff?"