ts rest
v3.51.0
魔法のエンドツーエンドの型型エクスペリエンスのための徐々に採用可能なRPCのようなクライアントとサーバーヘルパー?
TS-Restは、APIの契約を定義する簡単な方法を提供します。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!
} ) ; 契約を作成し、サーバーにそれを実装し、クライアントで消費します。漸進的に採用し、チームと一緒に試してから、より速く出荷します。
これらの素晴らしい人々(絵文字キー)のすべてに大いに感謝します。
youssef gaber ? | ハーマンソンごと | グレゴリー・ホーリエ | マイケル・アンジェロ | ピーターベンター | Rifaldhi AW | ジョナサン・ホワイト |
マックス・ブロスナハン ? | オリバーバトラー ? ? ? | エイドリアン・バリルスキー | ニール・A・ドブソン | エリックはします | ベン | LW ? |
アンドリュー・ヴァンス |
2022年の最初のコミット以来、私たちは着実に成長しています。私たちは自分の進歩を誇りに思っており、将来に興奮しています。