Pembantu klien dan server seperti RPC yang dapat diadopsi secara bertahap untuk pengalaman ajaib ujung ke ujung yang diketik?
TS-REST menawarkan cara sederhana untuk mendefinisikan kontrak untuk API Anda, yang dapat dikonsumsi dan diimplementasikan oleh aplikasi Anda, memberi Anda keamanan tipe ujung ke ujung tanpa kerumitan atau pembuatan kode.
Tentukan kontrak API Anda dengan mudah di suatu tempat yang dibagikan
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 ( ) ,
} ) ,
} ,
} ) ;Memenuhi kontrak di server Anda, dengan router jenis yang aman:
const router = s . router ( contract , {
getPosts : async ( { params : { id } } ) => {
return {
status : 200 ,
body : prisma . post . findUnique ( { where : { id } } ) ,
} ;
} ,
} ) ;Konsumsi API pada klien dengan antarmuka seperti RPC:
const result = await client . getPosts ( {
headers : { 'x-pagination-page' : 1 } ,
query : { skip : 0 , take : 10 } ,
// ^-- Fully typed!
} ) ; Buat kontrak, terapkan di server Anda, lalu konsumsinya di klien Anda. Adopsi secara bertahap, uji coba dengan tim Anda, lalu dapatkan pengiriman lebih cepat.
Terima kasih banyak kepada semua orang yang luar biasa ini (Kunci Emoji), yang telah membantu memungkinkan TS-REST:
Youssef Gaber ? | Per Hermansson | Grégory Houllier | Michael Angelo | Pieter Venter | Rifaldhi AW | Jonathan White |
Max Brosnahan ? | Oliver Butler ? ? ? | Adrian Barylski | Neil A. Dobson | Eric lakukan | Ben | Lw ? |
Andrew Vance |
Sejak komit pertama kami pada tahun 2022, kami telah tumbuh dengan mantap. Kami bangga dengan kemajuan kami dan kami senang dengan masa depan.