tRPC란? tRPC 간단 소개
타입스크립트로 FE 개발을 해봤다면, 모두 한 번쯤은 경험해본 일이 있을 것이다.
바로 서버와 API 통신을 하면서, Response로 받아온 데이터의 타입 처리를 위해 type을 일일히 작성하는 일이다.
당연하다면 당연한 일이지만, API에 변경점이 있을 때 마다 매번 타입을 다시 작성해야 하고 API 호출에 대한 코드 역시 개발자가 직접 관리해야하는 부분이었다.
tRPC는 이를 좀 더 효율적으로 개선하여 개발자에게 도움을 주는 라이브러리이다.
👍 tRPC는 Typed Remote Procedure Call의 줄임말이다.
공식 문서에서 소개하는 API 호출 코드를 확인하면 다음과 같다.
다음은 우리가 기존에 사용하던 코드
// 기존 코드
const res = await fetch('/api/users/1');
const user = await res.json();
그리고 이것이 tRPC를 사용하여 API를 호출한 코드이다.
// tRPC를 사용한 코드
const user = await api.users.getById({ id: 1 });
기존의 URL을 통해서 호출하던 방식이 함수를 통해 호출하는 방식으로 바뀌었다.
클라이언트에서는 @trpc/client, 서버에서는 @trpc/server 라이브러리를 사용하여 API 호출 환경을 세팅하면 타입이 안정된 서버-클라이언트 어플리케이션을 구축할 수 있다.
💕 사전에 미리 서버 API에 대한 타입을 자동으로 설정하므로, 사용자가 직접 API Response에 대한 타입을 작성할 필요가 없다. (당연히 서버 API가 변경되어도 자동으로 클라이언트에 반영된다)
💕 때문에 타입스크립트로 인한 타입 에러나 런타임 에러를 최소화하여 생산성을 높이고 스트레스를 줄일 수 있다.
직접 이 라이브러리를 사용하고자 한다면, 공식 문서의 Quickstart에서 도움을 받을 수 있다.
🤣 다만, 이 라이브러리는 타입스크립트를 사용하는 서버-클라이언트 환경에서 작동하기에 한국에서 많이 사용되는 Java Spring에 적용할 수 없는 아쉬움이 있다...
😊 참고자료
tRPC - Move Fast and Break Nothing. End-to-end typesafe APIs made easy. | tRPC
End-to-end typesafe APIs made easy. Automatic typesafety & autocompletion inferred from your API-paths, their input data, & outputs 🧙♂️
trpc.io