diff options
author | 2022-02-14 12:48:52 -0500 | |
---|---|---|
committer | 2022-02-14 12:48:52 -0500 | |
commit | ba5e2b5e6c20207955991775dc4aa8879331542c (patch) | |
tree | 28e68347035a534f8b56991ede570dfcf830cb01 /examples/ssr/src/api.ts | |
parent | 61f438fdcbab7163bc3399e623a80d283e018371 (diff) | |
download | astro-ba5e2b5e6c20207955991775dc4aa8879331542c.tar.gz astro-ba5e2b5e6c20207955991775dc4aa8879331542c.tar.zst astro-ba5e2b5e6c20207955991775dc4aa8879331542c.zip |
Flagged SSR support (#2548)
* Checkpoint, basics are working
* Add the `--experimental-ssr` flag
* Adds the changeset
* Fixes population of getStaticPaths results
* Pass through the imported module
* Route manifest test
* Fix remaining tests
* Fix remaining tests
* Copy server assets over
* Fix types
* Allowing passing in the request to the Node version of App
* Improve the example app
* Gets CI to pass
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; + }); +} |