ts rest
v3.51.0
可逐步采用的类似RPC的客户端和服务器帮助者,以获得神奇的端到一端的键入体验?
TS-REST提供了一种简单的方法来定义API合同,您的应用程序可以既可以消耗又可以实施,从而使您无需麻烦或代码生成而端到端类型的安全性。
轻松定义您的API合同共享的地方
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 ( ) ,
} ) ,
} ,
} ) ;使用类型安全路由器履行服务器上的合同:
const router = s . router ( contract , {
getPosts : async ( { params : { id } } ) => {
return {
status : 200 ,
body : prisma . post . findUnique ( { where : { id } } ) ,
} ;
} ,
} ) ;使用类似RPC的接口在客户端上使用API:
const result = await client . getPosts ( {
headers : { 'x-pagination-page' : 1 } ,
query : { skip : 0 , take : 10 } ,
// ^-- Fully typed!
} ) ; 创建合同,在服务器上实现它,然后在您的客户端中消耗它。逐步采用,与您的团队进行试用,然后更快地运输。
非常感谢所有这些出色的人(表情符号钥匙),他们帮助使TS-Rest成为可能:
Youssef Gaber ? | 根据赫曼森 | GrégoryHoullier | 迈克尔·安吉洛 | Pieter Venter | Rifaldhi AW | 乔纳森·怀特 |
马克斯·布罗斯纳汉(Max Brosnahan) ? | 奥利弗·巴特勒 ? ? ? | 阿德里安·巴里斯基(Adrian Barylski) | Neil A. Dobson | 埃里克(Eric)做 | 本 | LW ? |
安德鲁万斯 |
自2022年我们的第一次提交以来,我们一直在稳步增长。我们为我们的进步感到自豪,我们对未来感到兴奋。