diff options
Diffstat (limited to 'examples/ssr/src/api.ts')
-rw-r--r-- | examples/ssr/src/api.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/ssr/src/api.ts b/examples/ssr/src/api.ts new file mode 100644 index 000000000..9fd7d0683 --- /dev/null +++ b/examples/ssr/src/api.ts @@ -0,0 +1,35 @@ +interface Product { + id: number; + name: string; + price: number; + image: string; +} + +//let origin: string; +const { mode } = import.meta.env; +const origin = mode === 'develeopment' ? + `http://localhost:3000` : + `http://localhost:8085`; + +async function get<T>(endpoint: string, cb: (response: Response) => Promise<T>): Promise<T> { + const response = await fetch(`${origin}${endpoint}`); + if(!response.ok) { + // TODO make this better... + return null; + } + return cb(response); +} + +export async function getProducts(): Promise<Product[]> { + return get<Product[]>('/api/products', async response => { + const products: Product[] = await response.json(); + return products; + }); +} + +export async function getProduct(id: number): Promise<Product> { + return get<Product>(`/api/products/${id}`, async response => { + const product: Product = await response.json(); + return product; + }); +} |