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年我們的第一次提交以來,我們一直在穩步增長。我們為我們的進步感到自豪,我們對未來感到興奮。