Os ajudantes de clientes e servidores do tipo RPC adotáveis incrementais para uma experiência digitada de ponta a ponta mágica de ponta a ponta?
O TS-REST oferece uma maneira simples de definir um contrato para sua API, que pode ser consumida e implementada pelo seu aplicativo, oferecendo segurança ao tipo de ponta a ponta sem o incômodo ou a geração de código.
Defina facilmente seu contrato de API em algum lugar compartilhado
const contract = c . router ( {
getPosts : {
method : 'GET' ,
path : '/posts' ,
query : z . object ( {
skip : z . number ( ) ,
take : z . number ( ) ,
} ) , // <-- Zod schema
responses : {
200 : c . type < Post [ ] > ( ) , // <-- OR normal TS types
} ,
headers : z . object ( {
'x-pagination-page' : z . coerce . number ( ) . optional ( ) ,
} ) ,
} ,
} ) ;Cumpre o contrato em seu servidor, com um roteador seguro para o tipo:
const router = s . router ( contract , {
getPosts : async ( { params : { id } } ) => {
return {
status : 200 ,
body : prisma . post . findUnique ( { where : { id } } ) ,
} ;
} ,
} ) ;Consuma a API no cliente com uma interface do tipo RPC:
const result = await client . getPosts ( {
headers : { 'x-pagination-page' : 1 } ,
query : { skip : 0 , take : 10 } ,
// ^-- Fully typed!
} ) ; Crie um contrato, implemente -o no seu servidor e consuma -o em seu cliente. Adote incrementalmente, teste com sua equipe e entre em seguida, o envio mais rápido.
Agradecimentos enormes a todas essas pessoas maravilhosas (key emoji), que ajudaram a tornar o TS-Rest Possible:
Youssef Gaber ? | Por Hermansson | Grégory Houllier | Michael Angelo | Pieter Venter | Rifaldhi AW | Jonathan White |
Max Brosnahan ? | Oliver Butler ? ? ? | Adrian Barylski | Neil A. Dobson | Eric do | Ben | LW ? |
Andrew Vance |
Desde o nosso primeiro comprometimento em 2022, estamos crescendo constantemente. Estamos orgulhosos do nosso progresso e estamos empolgados com o futuro.